using Ease.Core.Model;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
namespace HRM.BO
{
#region ReportColumnDefinition
///
/// Report
/// Name, Description, Search-Condition, Report-Type ( Tabular, Aggregate, PVOT),sql, additionalWhereSQL,
/// reportShareType(Mail,
/// ReportColumn
/// BDColumnID
/// Alignment
/// Width
/// ReportSearchColumn
/// ReportAuthorization
/// EmployeeID
///
///
public class ReportColumnDefinition : BasicBaseObject
{
#region Constructor
public ReportColumnDefinition()
{
}
#endregion
public string TableName { get; set; }
public string TableColumnName { get; set; }
public string ColumnName { get; set; }
public string ColumnCode { get; set; }
public ColumnDataTypeEnum DataType { get; set; }
public bool UsedAsSearch { get; set; }
public string Aggregate { get; set; }
public OrderByEnum ColumnOrderBy { get; set; }
public bool HasOrderBy { get; }
public int OrderByValue { get; }
public bool ColumnVisible { get; set; }
public Grouping ObjectSUBGroup { get; set; }
public int ObjectSUBGroupID { get; set; }
public ObjectGrouping ObjectGroup { get; set; }
public int ObjectGroupID { get; set; }
public string Caption { get; set; }
public decimal Width { get; set; }
public ColumnAlignmentEnum Alignment { get; set; }
public int AlignmentValue { get; }
public string ValueFormat { get; set; }
public bool IsThisPicker { get; set; }
public PickerTypeEnum PickerType { get; set; }
public string PickerTablesName { get; set; }
public string PickerColumnsName { get; set; }
public string ValueMemberColumnName { get; set; }
public string UserData { get; set; }
public string Operator { get; set; }
public string Values { get; set; }
public string AssemblyName { get; set; }
public string UDControlName { get; set; }
public bool IsUDControl { get; set; }
public int IDForSerialize { get; set; }
public List Dependancys { get; set; }
public string WhereClauses { get; set; }
//#region Picker Dependancies
//private PickerDependancys _pickerdependancies = null;
//public PickerDependancys Dependancys
//{
// get
// {
// if (_pickerdependancies == null)
// {
// _pickerdependancies = new PickerDependancys();
// }
// SetThisAsParentOf(_pickerdependancies);
// return _pickerdependancies;
// }
// set
// {
// _pickerdependancies = value;
// SetThisAsParentOf(_pickerdependancies);
// base.SetObjectStateModified();
// }
//}
//#endregion
//#region Functions
//public void Save()
//{
// try
// {
// Service.Save(this);
// }
// catch (ServiceException e)
// {
// throw new ServiceException(e.Message, e);
// }
//}
//public void Delete()
//{
// try
// {
// Service.Delete(this.ID);
// }
// catch (ServiceException e)
// {
// throw new ServiceException(e.Message, e);
// }
//}
//public void Delete(ID columnID)
//{
// try
// {
// Service.Delete(columnID);
// }
// catch (ServiceException e)
// {
// throw new ServiceException(e.Message, e);
// }
//}
//public ReportColumnDefinition Get(ID columnID)
//{
// ReportColumnDefinition item;
// #region CacheHeader
// item = (ReportColumnDefinition)_cache["Get", columnID];
// if (item != null)
// return item;
// #endregion
// try
// {
// item = Service.Get(columnID);
// }
// catch (ServiceException e)
// {
// throw new ServiceException(e.Message, e);
// }
// #region CacheFooter
// _cache.Add(item, "Get", columnID);
// #endregion
// return item;
//}
//public ReportColumnDefinition Get()
//{
// ReportColumnDefinition item;
// #region CacheHeader
// item = (ReportColumnDefinition)_cache["Get", this.ID];
// if (item != null)
// return item;
// #endregion
// try
// {
// item = Service.Get(this.ID);
// }
// catch (ServiceException e)
// {
// throw new ServiceException(e.Message, e);
// }
// #region CacheFooter
// _cache.Add(item, "Get", this.ID);
// #endregion
// return item;
//}
//private Type _sysdataType;
//public void SetSystemDatatype(Type type)
//{
// _sysdataType = type;
//}
/////
///// Used only for picker
/////
///// Data Table
//public DataTable GetPickerData()
//{
// DataTable dt;
// try
// {
// if (this.PickerType == PickerTypeEnum.None)
// throw new ServiceException("Invalid user of picker data.");
// if (this.PickerType == PickerTypeEnum.Table)
// {
// string sql = string.Format("SELECT Distinct {0}, {1} FROM {2} {3}", this.ValueMemberColumnName, this.PickerColumnsName, this.PickerTablesName, this._sWhereClause);
// dt = ColumnDefinition.Service.Get(sql);
// }
// else if (this.PickerType == PickerTypeEnum.ManualSQL)
// {
// string str = this.UserData;
// if (str.ToLower().Contains("where") && this.WhereClauses.ToString() != String.Empty)
// {
// str = str.ToLower().Replace("where", this._sWhereClause + " and");
// }
// else
// {
// str = str + this._sWhereClause;
// }
// dt = ColumnDefinition.Service.Get(str);
// }
// else
// {
// dt = new DataTable("Picker");
// DataColumn col = new DataColumn("Show", typeof(bool));
// dt.Columns.Add(col);
// col = new DataColumn("Value", typeof(int));
// dt.Columns.Add(col);
// col = new DataColumn("Name", typeof(string));
// dt.Columns.Add(col);
// string[] tokens = this.UserData.Split(';');
// foreach (string token in tokens)
// {
// string[] segs = token.Split('=');
// if (segs == null || segs.Length != 2)
// continue;
// int val = Convert.ToInt32(segs[1]);
// dt.Rows.Add(0, val, segs[0]);
// }
// }
// }
// catch (ServiceException e)
// {
// throw new ServiceException(e.Message, e);
// }
// return dt;
//}
////for userdefined control
//public IUDControl GetUDControl()
//{
// IUDControl ctl = null;
// if (this.IsUDControl)
// {
// System.Reflection.Assembly ass = System.Reflection.Assembly.LoadFrom(Environment.CurrentDirectory + "\\" + _assemblyName);
// Type tye = ass.GetType(_udControlName);
// System.Reflection.ConstructorInfo cInfo = tye.GetConstructor(new Type[] { });
// ctl = (IUDControl)cInfo.Invoke(null);
// //ctl = (IUDControl)Activator.CreateInstance(tye);
// }
// return ctl;
//}
//internal string GenSQL()
//{
// //If column type is output just return empty
// if (!this.UsedAsSearch)
// return string.Empty;
// //Added by hasib
// if (IsUDControl)
// {
// string ctlsql = string.Empty;
// string valuestring = this.Values;//GetUDControl().GetValueString();
// if (valuestring != string.Empty)
// ctlsql = string.Format("{0}.{1} IN ({2})", this.TableName, this.ColumnName, this.Values);
// return ctlsql;
// }
// //If no file is used return empty
// if (this.Operator.ToLower().IndexOf("no filter") != -1 || this.Values.Length <= 0)
// return string.Empty;
// switch (this.DataType)
// {
// case ColumnDataTypeEnum.String:
// //If using in/not in operator
// if (this.Operator.ToLower().IndexOf("in") != -1)
// {
// if (this.Values.Contains("'"))
// this.Values = this.Values.Replace("'", "''");
// string vals = string.Empty;
// string[] tokens = this.Values.Split(',');
// foreach (string token in tokens)
// {
// vals += vals.Length > 0 ? ", " : "";
// vals += string.Format("'{0}'", token.Trim());
// }
// return this.GetForInSQL(vals);
// }
// //If using like operator
// else if (this.Operator.ToLower().IndexOf("like") != -1)
// {
// return this.GetForLikeSQL(this.Values);
// }
// //All other operators
// else
// {
// string vals = string.Format("'{0}'", this.Values);
// return this.GetForOthersSQL(vals);
// }
// case ColumnDataTypeEnum.Numeric:
// //If using in/not in operator
// if (this.Operator.ToLower().IndexOf("in") != -1)
// {
// return this.GetForInSQL(this.Values);
// }
// //If using between operator
// else if (this.Operator.ToLower().IndexOf("between") != -1)
// {
// string[] tokens = this.Values.Split(';');
// string vals = string.Format("{0} AND {1}", tokens[0].Trim(), tokens[1].Trim());
// return this.GetForOthersSQL(vals);
// }
// //All other operators
// else
// {
// return this.GetForOthersSQL(this.Values);
// }
// case ColumnDataTypeEnum.DateTime:
// //If using in/not in operator
// if (this.Operator.ToLower().IndexOf("in") != -1)
// {
// string vals = string.Empty;
// string[] tokens = this.Values.Split(',');
// foreach (string token in tokens)
// {
// vals += vals.Length > 0 ? ", " : "";
// int n = token.Trim().IndexOf(' ');
// string ss = Convert.ToDateTime(token.Trim().Remove(n)).ToString("dd MMM yyyy");
// vals += string.Format("'{0}'", ss);
// }
// return this.GetForInSQL(vals);
// }
// //If using between operator
// else if (this.Operator.ToLower().IndexOf("between") != -1)
// {
// string[] tokens = this.Values.Split(';');
// string vals = string.Format("'{0}' AND '{1}'", tokens[0].Trim(), tokens[1].Trim());
// return this.GetForOthersSQL(vals);
// }
// //All other operators
// else
// {
// string vals = string.Format("'{0}'", this.Values);
// return this.GetForOthersSQL(vals);
// }
// default:
// break;
// }
// return string.Empty;
//}
//internal string GenSearchString()
//{
// //If column type is output just return empty
// if (!this.UsedAsSearch)
// return string.Empty;
// //Added by Hasib 28.02.10 For User Defined Control
// //if (IsUDControl)
// //{
// // string valuestring = GetUDControl().GetValueString();
// // if(valuestring != string.Empty)
// // return valuestring;
// //}
// //end
// //If no file is used return empty
// if (this.Operator.ToLower().IndexOf("no filter") != -1 || this.Values.Length <= 0)
// return string.Empty;
// switch (this.DataType)
// {
// case ColumnDataTypeEnum.String:
// //If using in/not in operator
// if (this.Operator.ToLower().IndexOf("in") != -1)
// {
// string vals = this.TableName + ":" + this.Values;
// return vals;
// }
// //If using like operator
// else if (this.Operator.ToLower().IndexOf("like") != -1)
// {
// return this.GetForLikeSQL(this.Values);
// }
// //All other operators
// else
// {
// string vals = string.Format("'{0}'", this.Values);
// return this.GetForOthersSQL(vals);
// }
// case ColumnDataTypeEnum.Numeric:
// //If using in/not in operator
// if (this.Operator.ToLower().IndexOf("in") != -1)
// {
// string vals = this.ColumnName + ":" + this.Values;
// return vals;
// }
// //If using between operator
// else if (this.Operator.ToLower().IndexOf("between") != -1)
// {
// string[] tokens = this.Values.Split(';');
// string vals = this.ColumnName + ":" + string.Format("{0} AND {1}", tokens[0].Trim(), tokens[1].Trim());
// return vals;
// }
// //All other operators
// else
// {
// string vals = this.ColumnName + ": " + this.Values;
// return vals;
// }
// case ColumnDataTypeEnum.DateTime:
// //If using in/not in operator
// if (this.Operator.ToLower().IndexOf("in") != -1)
// {
// string vals = string.Empty;
// vals = this.ColumnName + ":" + this.Values;
// return vals;
// }
// //If using between operator
// else if (this.Operator.ToLower().IndexOf("between") != -1)
// {
// string[] tokens = this.Values.Split(';');
// string vals = this.ColumnName + ":" + string.Format("'{0}' AND '{1}'", tokens[0].Trim(), tokens[1].Trim());
// return vals;
// }
// //All other operators
// else
// {
// string vals = this.ColumnName + ":" + this.Values;
// return vals;
// }
// default:
// break;
// }
// return string.Empty;
//}
//string GetForInSQL(string values)
//{
// //shakib
// //return string.Format("{0}.{1} {2} ({3})", this.TableName, this.ColumnName, this.Operator, values);
// if (this.PickerType != PickerTypeEnum.UserDefined)
// {
// return string.Format("{0}.{1} {2} ({3})", this.TableName, this.ValueMemberColumnName, this.Operator, values);
// }
// else
// {
// return string.Format("{0}.{1} {2} ({3})", this.TableName, this.ColumnName, this.Operator, values);
// }
//}
//string GetForLikeSQL(string values)
//{
// return string.Format("{0}.{1} {2} '%{3}%'", "[" + this.TableName + "]", this.ColumnName, this.Operator, values);
//}
//string GetForOthersSQL(string values)
//{
// string s = string.Format("{0}.{1} {2} {3}", this.TableName, this.ColumnName, this.Operator, values);
// return s;
//}
//#endregion
//#region Service Factory IReportColumnDefinitionService : IReportColumnDefinitionService
//internal static IReportColumnDefinitionService Service
//{
// get { return (IReportColumnDefinitionService)LocalFactory.Facory.CreateService(typeof(IReportColumnDefinitionService)); }
//}
//#endregion
}
#region Report Column Definition collection
public class ReportColumnDefinitionCollection : BasicBaseObject
{
#region Constructor
public ReportColumnDefinitionCollection()
{
}
#endregion
//#region Inherited Functions
//public void Add(ReportColumnDefinition item)
//{
// base.AddItem(item);
//}
//public ReportColumnDefinition this[ID id]
//{
// get { return (ReportColumnDefinition)base.GetItem(id); }
//}
//public ReportColumnDefinition this[ReportColumnDefinition item]
//{
// get { return (ReportColumnDefinition)base.GetItem(item); }
//}
//public ReportColumnDefinition this[int index]
//{
// get { return (ReportColumnDefinition)base.InnerList[index]; }
//}
//public ReportColumnDefinition this[string code]
//{
// get
// {
// foreach (ReportColumnDefinition oItem in this)
// {
// if (oItem.ColumnCode == code)
// {
// return oItem;
// }
// }
// return null;
// }
//}
//public bool IsExist(string code)
//{
// foreach (ReportColumnDefinition oItem in this)
// {
// if (oItem.ColumnCode == code)
// {
// return true;
// }
// }
// return false;
//}
//public int GetItemIndex(ID id)
//{
// return base.GetIndex(id);
//}
//public int GetItemIndex(ReportColumnDefinition item)
//{
// return base.GetIndex(item.ID);
//}
//public void Remove(ReportColumnDefinition item)
//{
// base.RemoveItem(item);
//}
//public void Remove(string code)
//{
// base.RemoveItem(this[code]);
//}
//public string GetSearchString(ReportColumnDefinitionCollection srcs)
//{
// string sSearchString = "Search Criteria:";
// int nCount = 0;
// foreach (ReportColumnDefinition rc in srcs)
// {
// string s = rc.GenSearchString();
// if (s.Length <= 0)
// continue;
// nCount = nCount + 1;
// sSearchString = sSearchString + s + "; ";
// }
// sSearchString = (nCount > 1) ? sSearchString.Substring(0, sSearchString.Length - 2) : "";
// return sSearchString;
//}
//#endregion
#region Properties
public DataTable ColumnsList { get; set; }
#endregion
//#region Functions
//public static ReportColumnDefinitionCollection Get()
//{
// ReportColumnDefinitionCollection items;
// #region CacheHeader
// items = (ReportColumnDefinitionCollection)_cache["Get"];
// if (items != null)
// return items;
// #endregion
// try
// {
// items = ReportColumnDefinition.Service.Get();
// }
// catch (ServiceException e)
// {
// throw new ServiceException(e.Message, e);
// }
// #region CacheFooter
// _cache.Add(items, "Get");
// #endregion
// return items;
//}
//public static ReportColumnDefinitionCollection SearchRCD(string sSearchString)
//{
// ReportColumnDefinitionCollection items;
// #region CacheHeader
// items = (ReportColumnDefinitionCollection)_cache["SearchRCD", sSearchString];
// if (items != null)
// return items;
// #endregion
// try
// {
// items = ReportColumnDefinition.Service.SearchRCD(sSearchString);
// }
// catch (ServiceException e)
// {
// throw new ServiceException(e.Message, e);
// }
// #region CacheFooter
// _cache.Add(items, "SearchRCD", sSearchString);
// #endregion
// return items;
//}
//public static ReportColumnDefinitionCollection Get(ID subGroupID)
//{
// ReportColumnDefinitionCollection items;
// #region CacheHeader
// items = (ReportColumnDefinitionCollection)_cache["Get", subGroupID];
// if (items != null)
// return items;
// #endregion
// try
// {
// items = ReportColumnDefinition.Service.GetBySubGroup(subGroupID);
// }
// catch (ServiceException e)
// {
// throw new ServiceException(e.Message, e);
// }
// #region CacheFooter
// _cache.Add(items, "Get", subGroupID);
// #endregion
// return items;
//}
//public static ReportColumnDefinitionCollection GetByReport(ID reportID)
//{
// ReportColumnDefinitionCollection items;
// #region CacheHeader
// items = (ReportColumnDefinitionCollection)_cache["Get", reportID];
// if (items != null)
// return items;
// #endregion
// try
// {
// items = ReportColumnDefinition.Service.GetByReport(reportID);
// }
// catch (ServiceException e)
// {
// throw new ServiceException(e.Message, e);
// }
// #region CacheFooter
// _cache.Add(items, "Get", reportID);
// #endregion
// return items;
//}
//#endregion
}
#endregion
//#region Interface
//public interface IReportColumnDefinitionService
//{
// void Save(ReportColumnDefinition rC);
// void Delete(ID columnID);
// void SetIDOfAllItem(IndexedBusinessObjects objects);
// ReportColumnDefinition Get(ID columnID);
// ReportColumnDefinitionCollection Get();
// ReportColumnDefinitionCollection SearchRCD(string sSearch);
// ReportColumnDefinitionCollection GetBySubGroup(ID subGroupID);
// ReportColumnDefinitionCollection GetByReport(ID reportID);
//}
//#endregion
#endregion
}