示例#1
0
        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);
        }
示例#2
0
        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);
            }
        }