Hello Guys
I have got a problem with the one of the item added event receiver we deployed in production environment, It is firing only for few entries. After item added , event receiver need to move the list item to a folders inside the same list.
We have tested and its working fine from our side, but it is failing for few entries.
Please have a look at my code below, suggest me if i do any mistakes in my code.
public override void ItemAdded(SPItemEventProperties properties) { try { var item = properties.ListItem; var _docRecType = item["Document_x0020_Received"].ToString(); _docRecType = _docRecType.Split('#').Last(); //Get the folder name by passing _docRecType to the returns folder method var folderName = getFolderName(_docRecType); var folderUrl = SPUtility.ConcatUrls(SPUtility.ConcatUrls(item.Web.Url, item.ParentList.RootFolder.Url), folderName); EnsureFolder(item.ParentList, folderName, folderUrl); MoveItemToFolder(item, folderUrl); } catch(Exception ex) { SPDiagnosticsService.Local.WriteTrace(0, new SPDiagnosticsCategory("Legal and Court Events", TraceSeverity.Unexpected, EventSeverity.Error), TraceSeverity.Unexpected, ex.Message, ex.StackTrace); } } private static void EnsureFolder(SPList list, string folderName, string folderUrl) { if (!list.ParentWeb.GetFolder(folderUrl).Exists) { SPListItem newFolder = list.Items.Add(list.RootFolder.ServerRelativeUrl, SPFileSystemObjectType.Folder, folderName); newFolder.Update(); } } private static void MoveItemToFolder(SPListItem item, string folderUrl) { if (item.FileSystemObjectType == SPFileSystemObjectType.File) { var filePath = string.Format("{0}/{1}_.000", folderUrl, item.ID); var file = item.Web.GetFile(item.Url); file.MoveTo(filePath); } } private string getFolderName(string _docReccived) { string result = string.Empty; using (SPSite site = new SPSite("http://xyz")) { using (SPWeb web = site.OpenWeb()) { SPList list = web.Lists["XL"]; SPQuery qry = new SPQuery(); qry.Query = "<Where><Eq><FieldRef Name='Document_x0020_received' /><Value Type='Text'>" + _docReccived + "</Value></Eq></Where>"; qry.ViewFields = "<FieldRef Name='Document_x0020_received' /><FieldRef Name='Folder' />"; qry.RowLimit = 1; SPListItemCollection coll = list.GetItems(qry); foreach (SPListItem item in coll) { result = item["Folder"].ToString(); } } } return result; }