private IList <T> ParseResult(ArchiveExecutionContext executionContext, IList <ArchiveListItem> list) { List <T> results = new List <T>(); if (list == null) { return(null); } foreach (ArchiveListItem item in list) { T t = Activator.CreateInstance <T>(); foreach (string column in item.ColumnData.Keys) { foreach (string propertyName in DynamicPropertyHelper.GetPropertyNames <T>(column)) { string value = item.ColumnData[column].DisplayValue; object parsedValue = CultureDataFormatter.ParseEncoded(value); parsedValue = DoTypeSpecificConversion(executionContext, DynamicPropertyHelper.GetColumnInfo(typeof(T), propertyName), parsedValue); ObjectPropertyAccessor.SetValue(t, propertyName, parsedValue); } } results.Add(t); } return(results); }
protected string[] ConvertValues(object[] values) { if (values == null || values.Length == 1 && values[0] == null) { return(null); } //check if paramters are incorrectly picked up as object[]{int[]} and if so, fix this if (values.Length == 1 && values[0].GetType().IsArray) { var tmpList = new List <object>(); foreach (object o in (IEnumerable)values[0]) { tmpList.Add(o); } values = tmpList.ToArray(); } string[] ret = new string[values.Length]; for (int i = 0; i < ret.Length; i++) { string convVal = null; if (values[i] != null) { if (values[i] is int) { convVal = CultureDataFormatter.EncodeInt((int)values[i]); } else if (values[i] is DateTime) { convVal = CultureDataFormatter.EncodeDateTime((DateTime)values[i]); } else if (values[i] is double) { convVal = CultureDataFormatter.EncodeDouble((double)values[i]); } else if (values[i] is string) { convVal = (string)values[i]; } else { convVal = CultureDataFormatter.Encode(values[i]); } } ret[i] = convVal; } return(ret); }
/// <summary> /// Should only show not done appointments from today (actually, current day) /// </summary> /// <param name="mainId"></param> /// <returns></returns> protected override ArchiveRestrictionInfo[] GetArchiveRestrictionInfos(int mainId) { var archiveRest = new ArchiveRestrictionInfo[] { new ArchiveRestrictionInfo { Name = Keyid, Operator = "=", Values = new string[] { CultureDataFormatter.EncodeInt(mainId) }, IsActive = true, InterOperator = InterRestrictionOperator.And }, new ArchiveRestrictionInfo { Name = "date", Operator = "today", Values = new string[] { "" }, //Values = new string[] //{ // CultureDataFormatter.EncodeDateTime( DateTime.Today ), // CultureDataFormatter.EncodeDateTime( DateTime.Today.AddDays( 2 )/*.AddDays( 1 ).AddSeconds( -1 )*/ ), //}, IsActive = true, InterOperator = InterRestrictionOperator.And }, new ArchiveRestrictionInfo { Name = "completed", Operator = "=", Values = new string[] { CultureDataFormatter.EncodeInt(0) }, IsActive = true } }; return(archiveRest); }
public string GetScript(int mainId) { using (var newArcAgt = new ArchiveAgent()) { //Setting the Parameters var archiveColumns = new string[] { Keyid, Contactid, Name, Department, Namedepartment , StreetaddressLine1, StreetaddressLine2, StreetaddressLine3 , StreetaddressCounty, StreetaddressCity, StreetaddressZip , PostalAddressLine1, PostalAddressLine2, PostalAddressLine3 , PostalAddressCounty, PostalAddressCity, PostalAddressZip , Country }; //Parameter - restriction - Archive restrictions var archiveRest = GetArchiveRestrictionInfos(mainId); //Parameter - page - Page number, page 0 is the first page int page = 0; //Parameter - pageSize – Number of records displayed per page const int pageSize = 10; // Get a page of results for an archive list, explicitly specifying // the restrictions, orderby and chosen columns ArchiveListItem[] arcLstItm = null; var script = "function initializeMarkers() {\n"; var placedCompanies = new HashSet <int>(); // Because we only want to register a place once. do { arcLstItm = newArcAgt.GetArchiveListByColumns( Archive, archiveColumns, new ArchiveOrderByInfo[0], archiveRest, null, page++, pageSize); foreach (ArchiveListItem archiveRow in arcLstItm) { int contactId = CultureDataFormatter.ParseEncodedInt(archiveRow.ColumnData[Contactid].DisplayValue); if (!placedCompanies.Contains(contactId)) { placedCompanies.Add(contactId); string address = string.Empty; address = address.Add(archiveRow.ColumnData[StreetaddressLine1].DisplayValue, ", "); address = address.Add(archiveRow.ColumnData[StreetaddressLine2].DisplayValue, ", "); address = address.Add(archiveRow.ColumnData[StreetaddressLine3].DisplayValue, ", "); address = address.Add(archiveRow.ColumnData[StreetaddressZip].DisplayValue, ", "); address = address.Add(archiveRow.ColumnData[StreetaddressCity].DisplayValue, ", "); if (address.IsNullOrEmpty()) { address = address.Add(archiveRow.ColumnData[PostalAddressLine1].DisplayValue, ", "); address = address.Add(archiveRow.ColumnData[PostalAddressLine2].DisplayValue, ", "); address = address.Add(archiveRow.ColumnData[PostalAddressLine3].DisplayValue, ", "); address = address.Add(archiveRow.ColumnData[PostalAddressZip].DisplayValue, ", "); address = address.Add(archiveRow.ColumnData[PostalAddressCity].DisplayValue, ", "); } address = address.Add(archiveRow.ColumnData[Country].DisplayValue, ", "); string lat, lng; GoogleMaps.GeocodeAddress(address, out lat, out lng ); var tooltip = System.Web.HttpUtility.JavaScriptStringEncode(archiveRow.ColumnData[Namedepartment].DisplayValue); script += string.Format("AddMarker(map, '{0}', {1}, {2} );\n", tooltip, lat, lng); } } } while(arcLstItm.Length != 0); script += "}"; return(script); } }