public static DataTable GetNewSubscribers(int bookmarkId, View view, View mailngServiceView, int dataActionId, string[] fields, string emailFieldName) { SqlAccess sqlAccess = new SqlAccess(); HashSet <string> subscribed = GetSubscribed(mailngServiceView, sqlAccess, dataActionId); Dictionary <string, Type> fd = new Dictionary <string, Type>(); if (fields == null || fields.Length == 0) { //subscribers.SetColumnsOrder(fields); fd = view.Fields.Values.OrderBy(x => x.Order).Where(w => !w.HideInTable).ToDictionary(f => f.DisplayName, f => f.View.DataTable.Columns[f.DatabaseNames].DataType); } else { fd = fields.ToDictionary(f => f, f => typeof(string)); } //DataTable subscribers=new DataTable("Subscribers"); //foreach (KeyValuePair<string,Type> f in fd) //{ // subscribers.Columns.Add(f.Key, f.Value); //} Durados.Bookmark bookmark = BookmarksHelper.GetBookmark(bookmarkId); int rowCount; Filter filter = GetBookmarkFilter(view, bookmark, sqlAccess); Durados.SortDirection direction = (SortDirection)Enum.Parse(typeof(SortDirection), bookmark.SortDirection); DataTable dt = sqlAccess.FillDataTable(view, 1, GetMaxPageSize(), filter, bookmark.SortColumn, direction, out rowCount, null, null, null, null).Copy(); //dt.SetColumnsOrder(fd.Keys.ToArray()); dt.Columns.Add("PK", typeof(string)); SetRows(view, subscribed, dt, emailFieldName); SetColumns(view, fd.Keys.ToArray(), dt); //dt.SetColumnsOrder(fd.Keys.ToArray()); return(dt); }
public static Filter GetBookmarkFilter(View view, Durados.Bookmark bookmark, SqlAccess sqlAccess) { System.Web.Mvc.FormCollection filterCollection = new System.Web.Mvc.FormCollection(new UI.Json.NameValueCollectionSerializer(bookmark.Filter).NameValueCollection); //HttpContext.Current.Session[guid] = c; UI.Json.Filter jsonFilter = ViewHelper.GetJsonFilter(filterCollection, bookmark.ViewName); Dictionary <string, object> values = new Dictionary <string, object>(); if (jsonFilter != null) { foreach (UI.Json.Field jsonField in jsonFilter.Fields.Values) { if (jsonField.Value != null && !string.IsNullOrEmpty(jsonField.Value.ToString())) { values.Add(jsonField.Name, jsonField.Value); } } } Filter filter = sqlAccess.GetFilter(view, values); return(filter); }