void Refresh() { this.Name = m_Item[TemplateCT.TemplateName] as string; this.State = EnumConverter.ToState(m_Item[TemplateCT.TemplateState] as string); SPFieldUserValueCollection v = new SPFieldUserValueCollection(m_Item.Web, m_Item.GetFieldValue <object>(TemplateCT.SendDraftTo, string.Empty).ToString()); this.SendDraftToAdresses = v.Select(p => p.User.Email).ToList(); this.UseFileForSubject = m_Item.GetFieldValue <bool>(TemplateCT.TemplateSubjectUseFile); this.UseFileForBody = m_Item.GetFieldValue <bool>(TemplateCT.TemplateBodyUseFile); this.UseFileForFrom = m_Item.GetFieldValue <bool>(TemplateCT.TemplateFromUseFile); this.UseFileForReply = m_Item.GetFieldValue <bool>(TemplateCT.TemplateReplayUseFile); this.From = m_Item.GetValueFromTextFieldOrFile(this.UseFileForFrom, TemplateCT.TemplateFrom, TemplateCT.TemplateFromFile, out FromAttached); this.Replay = m_Item.GetValueFromTextFieldOrFile(this.UseFileForReply, TemplateCT.TemplateReplay, TemplateCT.TemplateReplayFile, out ReplyAttached); this.Body = m_Item.GetValueFromTextFieldOrFile(this.UseFileForBody, TemplateCT.TemplateBody, TemplateCT.TemplateBodyFile, out this.BodyAttached); this.Subject = m_Item.GetValueFromTextFieldOrFile(this.UseFileForSubject, TemplateCT.TemplateSubject, TemplateCT.TemplateSubjectFile, out this.SubjectAttached); if (m_Item[TemplateCT.TemplateType] != null) { var val = new SPFieldMultiChoiceValue(m_Item[TemplateCT.TemplateType].ToString()); this.EventTypes = EnumConverter.ToType(val); } else { this.EventTypes = (int)TemplateTypeEnum.Unknown; } this.Associations = AssociationCollection.ParseOrDefault(m_Item[TemplateCT.Associations] as string); }
List <SPListItem> GetDescedantsForMessage(SPListItem message) { var res = new List <SPListItem>(); var discussionItem = message.ParentList.GetItemById(message.GetFieldValue <int>(SPBuiltInFieldId.ParentFolderId)); var threadIndex = message.GetFieldValue <string>(SPBuiltInFieldId.ThreadIndex, ""); if (!string.IsNullOrEmpty(threadIndex)) { var d = new Dictionary <int, SPListItem>(); foreach (SPListItem item in message.ParentList.GetItems(GetQueryForDiscussionItems(discussionItem.Folder)))//cannot query only for thread { var index = item.GetFieldValue <string>(SPBuiltInFieldId.ThreadIndex); if (threadIndex.StartsWith(index) && item.ContentTypeId.IsChildOf(SPBuiltInContentTypeId.Message)) { d.Add(index.Length, item); } } res.AddRange(d.OrderBy(p => p.Key) .Where(p => p.Key <= threadIndex.Length)//to avoid new messages after this .Select(p => p.Value)); } else { res.Add(message); } res.Insert(0, discussionItem); return(res); }
//static SPUser svcUserForEmptyResponse; public static string[] GetCodesFromDeptCodeField(this SPListItem item, string DeptCodeFieldName) { dynamic CodeNameValues; string[] CodeNames = new String[] { }; List <string> CodeNamesList = new List <string>(); string splitPattern = @";#\d+;#"; string removePattern = @"\d+;#"; CodeNameValues = item.GetFieldValue(DeptCodeFieldName); if (CodeNameValues.GetType().Name == "String") { if (CodeNameValues == "") { return(CodeNames); } CodeNames = Regex.Split(CodeNameValues, splitPattern); CodeNames[0] = Regex.Replace(CodeNames[0], removePattern, ""); } if (CodeNameValues.GetType().Name == "SPFieldLookupValueCollection") { foreach (SPFieldLookupValue CodeValue in CodeNameValues) { CodeNamesList.Add(CodeValue.LookupValue); CodeNames = CodeNamesList.ToArray(); } } return(CodeNames); }