using SuperOffice.CRM.ArchiveLists; using System; using System.Collections.Generic; using System.Text; namespace Omere.Providers { [ArchiveProvider("MyProvider", int.MaxValue / 2)] public class MyProvider : IArchiveProvider { private ColumnHelper _columnHelper; private EntityHelper _entityHelper; // Columns protected ArchiveColumnInfo _colExtId = new ArchiveColumnInfo("extid", "Ext Id", "Tooltip", Constants.DisplayTypes.String); protected ArchiveColumnInfo _colExtName = new ArchiveColumnInfo("extname", "Name", "Tooltip", Constants.DisplayTypes.String); public MyProvider() { _columnHelper = new ColumnHelper(this); _entityHelper = new EntityHelper(); _entityHelper.AddAvailableEntities(new ArchiveEntityInfo("ExtEntity", "Ext Entity", false)); } #region >>> IArchiveProviderHasRows Members <<< public void Close() { } public IEnumerable GetRows() { List resultList = GetDataFromWebService(); // read and format data, until we have completed one page while (index == 0) { // create a row and mark it with our entity and primary key ArchiveRow row = new ArchiveRow(EntityName, 1); WebServiceData entity = resultList[index]; ++index; // add columns, if they have been requested if (_columnHelper.WantAnyColumn(_colExtId)) row.AddOverlappingColumn(_colExtId.Name, result.Id.ToString()); if (_columnHelper.WantAnyColumn(_colExtName)) row.AddOverlappingColumn(_colExtName.Name, result.Name); yield return row; } yield break; } public void SetPagingInfo(int pageSize, int pageNumber) { } #endregion #region >>> IArchiveProviderHasColumns Members <<< public List GetAvailableColumns() { return _columnHelper.AvailableColumns; } public void SetDesiredColumns(params string[] columnIds) { _columnHelper.SetDesiredColumns(columnIds); } public void SetOrderBy(params ArchiveOrderByInfo[] orderBy) { } public bool SetRestriction(params ArchiveRestrictionInfo[] restrictions) { return true; } #endregion #region >>> IArchiveProviderHasEntities Members <<< public List GetAvailableEntities() { return _entityHelper.GetAvailableEntities(); } public void SetDesiredEntities(params string[] entities) { _entityHelper.SetDesiredEntities(entities); } #endregion } }