public override DataTable GetDataTable (LaunchpadPortalModuleBase module, string search)
        {
            var positions = module.LaunchpadController.FindObjects<PositionInfo> (
                @"WHERE CONCAT([Title], ' ', [ShortTitle]) LIKE N'%{0}%'", search, false);

            return DataTableConstructor.FromIEnumerable (positions);
        }
        public override DataTable GetDataTable (LaunchpadPortalModuleBase module, string search)
        {
            var documents = module.LaunchpadController.FindObjects<DocumentInfo> (
                @"WHERE CONCAT([ItemID], ' ', [Title], ' ', [Url]) LIKE N'%{0}%'", search, false);

            return DataTableConstructor.FromIEnumerable (documents);
        }
        public override DataTable GetDataTable (LaunchpadPortalModuleBase module, string search)
        {
            var eduPrograms = module.LaunchpadController.FindObjects<EduProgramInfo> (
                @"WHERE CONCAT([Code], ' ', [Title]) LIKE N'%{0}%'", search, false);

            return DataTableConstructor.FromIEnumerable (eduPrograms);
        }
        public override DataTable GetDataTable (LaunchpadPortalModuleBase module, string search)
        {
            var dt = new DataTable ();
            DataRow dr;

            dt.Columns.Add (new DataColumn ("DivisionID", typeof(int)));
            dt.Columns.Add (new DataColumn ("ParentDivisionID", typeof(int)));
            dt.Columns.Add (new DataColumn ("DivisionTermID", typeof(int)));
            dt.Columns.Add (new DataColumn ("Title", typeof(string)));
            dt.Columns.Add (new DataColumn ("ShortTitle", typeof(string)));
            dt.Columns.Add (new DataColumn ("HomePage", typeof(string)));
            dt.Columns.Add (new DataColumn ("DocumentUrl", typeof(string)));
            dt.Columns.Add (new DataColumn ("Location", typeof(string)));
            dt.Columns.Add (new DataColumn ("Phone", typeof(string)));
            dt.Columns.Add (new DataColumn ("Fax", typeof(string)));
            dt.Columns.Add (new DataColumn ("Email", typeof(string)));
            dt.Columns.Add (new DataColumn ("SecondaryEmail", typeof(string)));
            dt.Columns.Add (new DataColumn ("WebSite", typeof(string)));
            dt.Columns.Add (new DataColumn ("WorkingHours", typeof(string)));
            dt.Columns.Add (new DataColumn ("CreatedByUserID", typeof(int)));
            dt.Columns.Add (new DataColumn ("CreatedOnDate", typeof(DateTime)));
            dt.Columns.Add (new DataColumn ("LastModifiedByUserID", typeof(int)));
            dt.Columns.Add (new DataColumn ("LastModifiedOnDate", typeof(DateTime)));

            foreach (DataColumn column in dt.Columns)
                column.AllowDBNull = true;

            var divisions = module.LaunchpadController.FindObjects<DivisionInfo> (false,
                @"WHERE CONCAT([Title], ' ', [ShortTitle], ' ', [Location], ' ', [Phone], ' ',
                [Fax], ' ', [Email], ' ', [SecondaryEmail], ' ', [WebSite], ' ', [WorkingHours])
                LIKE N'%{0}%'", search);

            foreach (var division in divisions)
            {
                dr = dt.NewRow ();
                var i = 0;
                dr [i++] = division.DivisionID;
                dr [i++] = division.ParentDivisionID ?? Null.NullInteger;
                dr [i++] = division.DivisionTermID ?? Null.NullInteger;
                dr [i++] = division.Title;
                dr [i++] = division.ShortTitle;
                dr [i++] = division.HomePage;
                dr [i++] = division.DocumentUrl;
                dr [i++] = division.Location;
                dr [i++] = division.Phone;
                dr [i++] = division.Fax;
                dr [i++] = division.Email;
                dr [i++] = division.SecondaryEmail;
                dr [i++] = division.WebSite;
                dr [i++] = division.WorkingHours;
                dr [i++] = division.CreatedByUserID;
                dr [i++] = division.CreatedOnDate;
                dr [i++] = division.LastModifiedByUserID;
                dr [i++] = division.LastModifiedOnDate;

                dt.Rows.Add (dr);
            }

            return dt;
        }
        public override DataTable GetDataTable (LaunchpadPortalModuleBase module, string search)
        {
            var documentTypes = module.LaunchpadController.FindObjects<DocumentTypeInfo> (
                @"WHERE CONCAT([Type], ' ', [Description]) LIKE N'%{0}%'", search, false);

            return DataTableConstructor.FromIEnumerable (documentTypes);
        }
        public override DataTable GetDataTable (LaunchpadPortalModuleBase module, string search)
        {
            var dt = new DataTable ();
            DataRow dr;

            dt.Columns.Add (new DataColumn ("AchievementID", typeof(int)));
            dt.Columns.Add (new DataColumn ("Title", typeof(string)));
            dt.Columns.Add (new DataColumn ("ShortTitle", typeof(string)));
            dt.Columns.Add (new DataColumn ("AchievementType", typeof(string)));

            foreach (DataColumn column in dt.Columns)
                column.AllowDBNull = true;

            var achievements =  module.LaunchpadController.FindObjects<AchievementInfo> (
                @"WHERE CONCAT ([Title], ' ', [ShortTitle]) LIKE N'%{0}%'", search, false
            );

            foreach (var achievement in achievements)
            {
                var col = 0;
                dr = dt.NewRow ();

                dr [col++] = achievement.AchievementID;
                dr [col++] = achievement.Title;
                dr [col++] = achievement.ShortTitle;
                dr [col++] = Localization.GetString (AchievementTypeInfo.GetResourceKey (achievement.AchievementType), module.LocalResourceFile);

                dt.Rows.Add (dr);
            }

            return dt;
        }
        public override DataTable GetDataTable (LaunchpadPortalModuleBase module, string search)
        {
            var eduLevels = module.LaunchpadController.FindObjects<EduLevelInfo> (false, 
                @"WHERE CONCAT([Title], ' ', [ShortTitle]) LIKE N'%{0}%'", search);

            return DataTableConstructor.FromIEnumerable (eduLevels);
        }
        public override DataTable GetDataTable (LaunchpadPortalModuleBase module, string search)
        {
            var dt = new DataTable ();
            DataRow dr;

            dt.Columns.Add (new DataColumn ("PositionID", typeof(int)));
            dt.Columns.Add (new DataColumn ("Title", typeof(string)));
            dt.Columns.Add (new DataColumn ("ShortTitle", typeof(string)));
            dt.Columns.Add (new DataColumn ("Weight", typeof(int)));
            dt.Columns.Add (new DataColumn ("IsTeacher", typeof(bool)));

            foreach (DataColumn column in dt.Columns)
                column.AllowDBNull = true;

            var positions = module.LaunchpadController.FindObjects<PositionInfo> (false,
                @"WHERE CONCAT([Title], ' ', [ShortTitle]) LIKE N'%{0}%'", search);

            foreach (var position in positions)
            {
                dr = dt.NewRow ();
                dr [0] = position.PositionID;
                dr [1] = position.Title;
                dr [2] = position.ShortTitle;
                dr [3] = position.Weight;
                dr [4] = position.IsTeacher;

                dt.Rows.Add (dr);
            }

            return dt;
        }
 public override DataTable GetDataTable (LaunchpadPortalModuleBase module, string search)
 {
     var divisions = module.LaunchpadController.FindObjects<DivisionInfo> (
         @"WHERE CONCAT([Title], ' ', [ShortTitle], ' ', [Location], ' ', [Phone], ' ',
         [Fax], ' ', [Email], ' ', [SecondaryEmail], ' ', [WebSite], ' ', [WorkingHours])
         LIKE N'%{0}%'", search, false);
     
     return DataTableConstructor.FromIEnumerable (divisions);
 }
        public override DataTable GetDataTable (LaunchpadPortalModuleBase module, string search)
        {
            var dt = new DataTable ();
            DataRow dr;

            dt.Columns.Add (new DataColumn ("EmployeeID", typeof(int)));
            dt.Columns.Add (new DataColumn ("UserID", typeof(int)));
            dt.Columns.Add (new DataColumn ("PhotoFileID", typeof(int)));
            dt.Columns.Add (new DataColumn ("Phone", typeof(string)));
            dt.Columns.Add (new DataColumn ("CellPhone", typeof(string)));
            dt.Columns.Add (new DataColumn ("Fax", typeof(string)));
            dt.Columns.Add (new DataColumn ("LastName", typeof(string)));
            dt.Columns.Add (new DataColumn ("FirstName", typeof(string)));
            dt.Columns.Add (new DataColumn ("OtherName", typeof(string)));
            dt.Columns.Add (new DataColumn ("Email", typeof(string)));
            dt.Columns.Add (new DataColumn ("SecondaryEmail", typeof(string)));
            dt.Columns.Add (new DataColumn ("WebSite", typeof(string)));
            dt.Columns.Add (new DataColumn ("Messenger", typeof(string)));
            dt.Columns.Add (new DataColumn ("WorkingPlace", typeof(string)));
            dt.Columns.Add (new DataColumn ("WorkingHours", typeof(string)));
            dt.Columns.Add (new DataColumn ("Biography", typeof(string)));
            dt.Columns.Add (new DataColumn ("ExperienceYears", typeof(int)));
            dt.Columns.Add (new DataColumn ("ExperienceYearsBySpec", typeof(int)));
            dt.Columns.Add (new DataColumn ("IsPublished", typeof(bool)));
            //dt.Columns.Add (new DataColumn ("IsDeleted", typeof(bool)));

            // TODO: Remove audit fields
            dt.Columns.Add (new DataColumn ("CreatedByUserID", typeof(int)));
            dt.Columns.Add (new DataColumn ("CreatedOnDate", typeof(DateTime)));
            dt.Columns.Add (new DataColumn ("LastModifiedByUserID", typeof(int)));
            dt.Columns.Add (new DataColumn ("LastModifiedOnDate", typeof(DateTime)));

            foreach (DataColumn column in dt.Columns)
                column.AllowDBNull = true;

            var employees = module.LaunchpadController.FindObjects<EmployeeInfo> (
                @"WHERE CONCAT([LastName], ' ', [FirstName], ' ', [OtherName], ' ',
                [Phone], ' ', [CellPhone], ' ', [Fax], ' ', 
                [Email], ' ', [SecondaryEmail], ' ', [WebSite], ' ',
                [WorkingHours]) LIKE N'%{0}%'", search, false);

            foreach (var employee in employees)
            {
                dr = dt.NewRow ();
                var i = 0;
                dr [i++] = employee.EmployeeID;
                dr [i++] = employee.UserID ?? Null.NullInteger;
                dr [i++] = employee.PhotoFileID ?? Null.NullInteger;
                dr [i++] = employee.Phone;
                dr [i++] = employee.CellPhone;
                dr [i++] = employee.Fax;
                dr [i++] = employee.LastName;
                dr [i++] = employee.FirstName;
                dr [i++] = employee.OtherName;
                dr [i++] = employee.Email;
                dr [i++] = employee.SecondaryEmail;
                dr [i++] = Utils.FormatList (": ", employee.WebSiteLabel, employee.WebSite);
                dr [i++] = employee.Messenger;
                dr [i++] = employee.WorkingPlace;
                dr [i++] = employee.WorkingHours;

                dr [i++] = !string.IsNullOrWhiteSpace (employee.Biography) ? 
                    HtmlUtils.Shorten (employee.Biography, 16, "...") : string.Empty;
                
                dr [i++] = employee.ExperienceYears ?? Null.NullInteger;
                dr [i++] = employee.ExperienceYearsBySpec ?? Null.NullInteger;
                dr [i++] = employee.IsPublished;
                //dr [i++] = employee.IsDeleted;

                // TODO: Remove audit fields
                dr [i++] = employee.CreatedByUserID;
                dr [i++] = employee.CreatedOnDate;
                dr [i++] = employee.LastModifiedByUserID;
                dr [i++] = employee.LastModifiedOnDate;

                dt.Rows.Add (dr);
            }

            return dt;

        }
 public abstract DataTable GetDataTable (LaunchpadPortalModuleBase module, string search);
 public virtual void DataBind (LaunchpadPortalModuleBase module, string search = null)
 {
     Grid.DataSource = GetDataTable (module, search);
     module.Session [Grid.ID] = Grid.DataSource;
     Grid.DataBind ();
 }