Пример #1
0
        public ActionResult PossibleContacts(string startsWith = null, string contains = null, int maxCount = 10)
        {
            JsContactsResult contactsResults      = new JsContactsResult();
            Folder           userFolder           = StorageContext.UserFolder.Get(CurrentUser);
            Item             possibleContactsList = StorageContext.UserFolder.GetListForItemType(CurrentUser, SystemItemTypes.Contact);

            if (possibleContactsList != null)
            {
                Dictionary <string, string> contacts = new Dictionary <string, string>();
                List <Item> possibleContacts         = StorageContext.Items.
                                                       Include("FieldValues").
                                                       Where(item => item.UserID == CurrentUser.ID &&
                                                             item.FolderID == userFolder.ID &&
                                                             item.ParentID == possibleContactsList.ID &&
                                                             item.Name.StartsWith(startsWith)
                                                             // && System.Data.Objects.SqlClient.SqlFunctions.PatIndex("%" + contains + "%", item.Name) == 1     // TODO: test if this works
                                                             ).ToList <Item>();

                foreach (var item in possibleContacts)
                {
                    if (contains == null || item.Name.Contains(contains))
                    {
                        FieldValue fv = item.GetFieldValue(FieldNames.Value);
                        if (fv != null)
                        {
                            if (contacts.ContainsKey(item.Name))
                            {   // disambiguate duplicate names
                                item.Name = string.Format("{0} ({1})", item.Name, contacts.Count.ToString());
                            }
                            contacts.Add(item.Name, fv.Value);
                        }
                        if (contacts.Count == maxCount)
                        {
                            break;
                        }
                    }
                }
                contactsResults.Count    = contacts.Count;
                contactsResults.Contacts = contacts;
            }

            JsonResult result = new JsonResult();

            result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            result.Data = contactsResults;
            return(result);
        }
Пример #2
0
        public ActionResult PossibleContacts(string startsWith = null, string contains = null, int maxCount = 10)
        {
            JsContactsResult contactsResults = new JsContactsResult();
            Folder userFolder = StorageContext.UserFolder.Get(CurrentUser);
            Item possibleContactsList = StorageContext.UserFolder.GetListForItemType(CurrentUser, SystemItemTypes.Contact);
            if (possibleContactsList != null)
            {
                Dictionary<string, string> contacts = new Dictionary<string, string>();
                List<Item> possibleContacts = StorageContext.Items.
                    Include("FieldValues").
                    Where(item => item.UserID == CurrentUser.ID
                        && item.FolderID == userFolder.ID
                        && item.ParentID == possibleContactsList.ID
                        && item.Name.StartsWith(startsWith)
                        // && System.Data.Objects.SqlClient.SqlFunctions.PatIndex("%" + contains + "%", item.Name) == 1     // TODO: test if this works
                    ).ToList<Item>();

                foreach (var item in possibleContacts)
                {
                    if (contains == null || item.Name.Contains(contains))
                    {
                        FieldValue fv = item.GetFieldValue(FieldNames.Value);
                        if (fv != null)
                        {
                            if (contacts.ContainsKey(item.Name))
                            {   // disambiguate duplicate names
                                item.Name = string.Format("{0} ({1})", item.Name, contacts.Count.ToString());
                            }
                            contacts.Add(item.Name, fv.Value);
                        }
                        if (contacts.Count == maxCount) { break; }
                    }
                }
                contactsResults.Count = contacts.Count;
                contactsResults.Contacts = contacts;
            }

            JsonResult result = new JsonResult();
            result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            result.Data = contactsResults;
            return result;
        }