public static Hashtable CreateSite(SPUserCodeWorkflowContext context, string siteName) { Hashtable results = new Hashtable(); try { using (SPSite site = new SPSite(context.SiteUrl)) { SPWeb web = site.OpenWeb(context.WebUrl); web.Webs.Add( siteName, "Trip Report: " + siteName, string.Empty, 1033, "STS", false, false); } //results["success"] = true; results["exception"] = string.Empty; } catch (Exception e) { results = new Hashtable(); results["exception"] = e.Message; //results["success"] = false; } return results; }
public Hashtable RevertPermissions(SPUserCodeWorkflowContext context, string fromId, string toId) { Hashtable results = new Hashtable(); string result = string.Empty; try { using (SPSite site = new SPSite(context.CurrentWebUrl)) { using (SPWeb web = site.OpenWeb()) { int fId; int tId; if (int.TryParse(fromId, out fId) && int.TryParse(toId, out tId)) { SPList requirementsList = web.Lists["Requirements"]; if (requirementsList != null) { for (int i = fId; i <= tId; i++) { try { SPListItem item = requirementsList.GetItemById(i); if (item != null) { using (DisabledItemEventsScope scope = new DisabledItemEventsScope()) { if (!item.HasUniqueRoleAssignments) { item.BreakRoleInheritance(true); } foreach (SPRoleAssignment assignment in item.RoleAssignments) { assignment.RoleDefinitionBindings.RemoveAll(); assignment.Update(); } AddPermissions(item, web.Groups.GetByName("CG Debts Corporate Level"), web.RoleDefinitions.GetByType(SPRoleType.Contributor)); AddPermissions(item, web.Groups.GetByName("CG Debts Africa Admins"), web.RoleDefinitions.GetByType(SPRoleType.Contributor)); AddPermissions(item, web.Groups.GetByName("CG Debts Europe Admins"), web.RoleDefinitions.GetByType(SPRoleType.Contributor)); AddPermissions(item, web.Groups.GetByName("CG Debts Latam Admins"), web.RoleDefinitions.GetByType(SPRoleType.Contributor)); AddPermissions(item, web.Groups.GetByName("CG Debts Members"), web.RoleDefinitions.GetByType(SPRoleType.Contributor)); AddPermissions(item, web.Groups.GetByName("CG Debts NAM Admins"), web.RoleDefinitions.GetByType(SPRoleType.Contributor)); AddPermissions(item, web.Groups.GetByName("CG Debts Solutions Admins"), web.RoleDefinitions.GetByType(SPRoleType.Contributor)); } } } catch (Exception ex) { } } } } } } results["success"] = true; } catch (Exception e) { results = new Hashtable(); result += e.ToString(); results["success"] = false; } results["result"] = result; return(results); }
//Not used public Hashtable Delete(SPUserCodeWorkflowContext context, string id, string sourceList, string targetList) { Hashtable results = new Hashtable(); try { using (SPSite site = new SPSite(context.CurrentWebUrl)) { using (SPWeb web = site.OpenWeb()) { int currentId; if (int.TryParse(id, out currentId)) { SPList source = web.Lists[sourceList]; SPList target = web.Lists[targetList]; if (source != null && target != null) { SPListItem sourceItem = source.GetItemById(currentId); if (sourceItem != null) { Dictionary <int, DateTime> dict = new Dictionary <int, DateTime>(); foreach (SPListItem item in target.Items) { if (item["Project Id"] != null && sourceItem["ID"] != null && item["Project Id"].ToString() == sourceItem["ID"].ToString()) { dict.Add((int)item["ID"], (DateTime)item["Created"]); } } if (dict.Count > 0) { DateTime max = dict.Values.Max(); int lastTargetId = dict.Where(pair => max.Equals(pair.Value)).Select(pair => pair.Key).FirstOrDefault(); SPListItem targetItem = target.GetItemById(lastTargetId); if (targetItem != null && sourceItem["Reporting frequency"] != null) { switch (sourceItem["Reporting frequency"].ToString()) { case "Annual": sourceItem["Next Due Date"] = ((DateTime)sourceItem["Next Due Date"]).AddYears(-1); break; case "Bi-annual": sourceItem["Next Due Date"] = ((DateTime)sourceItem["Next Due Date"]).AddMonths(-6); break; case "Quarterly": sourceItem["Next Due Date"] = ((DateTime)sourceItem["Next Due Date"]).AddMonths(-3); break; } using (DisabledItemEventsScope scope = new DisabledItemEventsScope()) { sourceItem.Update(); } targetItem.Delete(); } } } } } } } results["success"] = true; results["exception"] = string.Empty; } catch (Exception e) { results = new Hashtable(); results["exception"] = e.ToString(); results["success"] = false; } return(results); }
private Hashtable DevMethod(SPUserCodeWorkflowContext context, string id, string sourceList, string targetList) { Hashtable results = new Hashtable(); try { using (SPSite site = new SPSite(context.CurrentWebUrl)) { using (SPWeb web = site.OpenWeb()) { int currentId; if (int.TryParse(id, out currentId)) { SPList source = web.Lists[sourceList]; SPList target = web.Lists[targetList]; if (source != null && target != null) { SPListItem sourceItem = source.GetItemById(currentId); if (sourceItem != null) { SPListItem targetItem = target.AddItem(); foreach (string fileName in sourceItem.Attachments) { SPFile file = sourceItem.ParentList.ParentWeb.GetFile(sourceItem.Attachments.UrlPrefix + fileName); byte[] imageData = file.OpenBinary(); targetItem.Attachments.Add(fileName, imageData); } targetItem["Title"] = sourceItem["Project"]; targetItem["Project"] = sourceItem["Project"]; targetItem["Source"] = sourceList; targetItem["Source Id"] = sourceItem["ID"]; if (sourceItem["Type of Attachment"] != null && sourceItem["Type of Attachment"].ToString() != string.Empty) { targetItem["Attachment Type"] = sourceItem["Type of Attachment"]; sourceItem["Type of Attachment"] = string.Empty; } targetItem.Update(); for (int i = sourceItem.Attachments.Count; i > 0; i--) { sourceItem.Attachments.Delete(sourceItem.Attachments[i - 1]); } using (DisabledItemEventsScope scope = new DisabledItemEventsScope()) { sourceItem.Update(); } } } } } } results["success"] = true; results["exception"] = string.Empty; } catch (Exception e) { results = new Hashtable(); results["exception"] = e.ToString(); results["success"] = false; } return(results); }
private Hashtable ProductionMethod(SPUserCodeWorkflowContext context, bool isDev) { Hashtable results = new Hashtable(); results["result"] = string.Empty; try { using (SPSite site = new SPSite(context.CurrentWebUrl)) { using (SPWeb web = site.OpenWeb()) { SPList loanList = web.Lists["Loan" + (isDev ? " Dev" : string.Empty)]; SPList requirementsList = web.Lists["Requirements" + (isDev ? " Dev" : string.Empty)]; if (loanList != null && requirementsList != null) { using (DisabledItemEventsScope scope = new DisabledItemEventsScope()) { SPListItemCollection items = requirementsList.Items; string oldStatus; string newStatus; foreach (SPListItem item in items) { oldStatus = item["Due Date Compliance Status"] == null ? "" : item["Due Date Compliance Status"].ToString(); newStatus = GetReqStatusProd(item); if (oldStatus != newStatus) { item["Due Date Compliance Status"] = newStatus; item.Update(); } oldStatus = item["Covenant Compliance Status"] == null ? "" : item["Covenant Compliance Status"].ToString(); newStatus = GetReqCovenantStatusProd(item); if (oldStatus != newStatus) { item["Covenant Compliance Status"] = newStatus; item.Update(); } } SPListItemCollection loanItems = loanList.Items; string oldLoanStatus; string newLoanStatus; foreach (SPListItem item in loanItems) { bool shouldUpdateLoanStatus = false; oldLoanStatus = item["Due Date Compliance Status"] == null ? "" : item["Due Date Compliance Status"].ToString(); newLoanStatus = GetLoanStatusProd(item, requirementsList); if (oldLoanStatus != newLoanStatus) { item["Due Date Compliance Status"] = newLoanStatus; shouldUpdateLoanStatus = true; } oldLoanStatus = item["Covenant Compliance Status"] == null ? "" : item["Covenant Compliance Status"].ToString(); newLoanStatus = GetLoanCovenantStatusProd(item, requirementsList); if (oldLoanStatus != newLoanStatus) { item["Covenant Compliance Status"] = newLoanStatus; shouldUpdateLoanStatus = true; } if (shouldUpdateLoanStatus) { item.Update(); } } } } } } results["success"] = true; } catch (Exception e) { results = new Hashtable(); results["result"] = e.ToString(); results["success"] = false; } return(results); }
public Hashtable SetItemPermissionsWhenReassignTask(SPUserCodeWorkflowContext context, string id, string sourceList, string assignedTo) { Hashtable results = new Hashtable(); try { using (SPSite site = new SPSite(context.CurrentWebUrl)) { using (SPWeb web = site.OpenWeb()) { SPList source = web.Lists[sourceList]; if (source != null) { if (!string.IsNullOrEmpty(assignedTo)) { int itemId; string username = string.Empty; if (int.TryParse(id, out itemId)) { SPListItem item = source.GetItemById(itemId); if (item != null) { isUserAdded = false; if (!item.HasUniqueRoleAssignments) { item.BreakRoleInheritance(true); } result += assignedTo; foreach (SPRoleAssignment assignment in item.RoleAssignments) { if (assignment.Member.LoginName == assignedTo && assignment.RoleDefinitionBindings.Contains(web.RoleDefinitions.GetByType(SPRoleType.Contributor))) { isUserAdded = true; result += "isUserAdded = true"; } } SPPrincipal spPrincipal = GetPrincipal(site, assignedTo); result += "SPPrincipal: " + spPrincipal.Name; if (spPrincipal != null) { UpdateItemPermissions(web, item, spPrincipal); } } } } } } } } catch (Exception e) { results = new Hashtable(); result += e.ToString(); results["success"] = false; } results["result"] = result; return(results); }
private Hashtable DevMethod(SPUserCodeWorkflowContext context, string id, string sourceList, string targetList) { Hashtable results = new Hashtable(); results["result"] = string.Empty; try { using (SPSite site = new SPSite(context.CurrentWebUrl)) { using (SPWeb web = site.OpenWeb()) { int currentId; if (int.TryParse(id, out currentId)) { SPList source = web.Lists[sourceList]; SPList target = web.Lists[targetList]; if (source != null && target != null) { SPListItem item = target.GetItemById(currentId); if (item != null) { SPListItemCollection listItems = GetParentDev(source, item); using (DisabledItemEventsScope scope = new DisabledItemEventsScope()) { if (listItems.Count > 0) { SPListItem listItem = listItems[0]; item["Responsible"] = listItem["Responsible"]; item["Responsible 2"] = listItem["Responsible 2"]; item["Person in charge"] = listItem["Person in charge"]; item["Legal"] = listItem["Legal"]; item["Operational"] = listItem["Operational"]; item["HS"] = listItem["HS"]; item["Tax"] = listItem["Tax"]; item["Approver"] = listItem["Approver"]; item["Insurance"] = listItem["Insurance"]; item["Compliance"] = listItem["Compliance"]; item["Environment"] = listItem["Environment"]; item["Construction"] = listItem["Construction"]; item["Controller"] = listItem["Controller"]; item.Update(); } } } } } } } results["success"] = true; } catch (Exception e) { results = new Hashtable(); results["result"] = e.ToString(); results["success"] = false; } return(results); }
private Hashtable ProductionMethod(SPUserCodeWorkflowContext context, string id, string sourceList, string targetList, bool isDev) { Hashtable results = new Hashtable(); results["result"] = string.Empty; try { using (SPSite site = new SPSite(context.CurrentWebUrl)) { using (SPWeb web = site.OpenWeb()) { int currentId; if (int.TryParse(id, out currentId)) { SPList source = web.Lists[sourceList]; SPList target = web.Lists[targetList]; if (source != null && target != null) { SPListItem sourceItem = source.GetItemById(currentId); if (sourceItem != null) { SPListItem targetItem = target.AddItem(); foreach (string fileName in sourceItem.Attachments) { SPFile file = sourceItem.ParentList.ParentWeb.GetFile(sourceItem.Attachments.UrlPrefix + fileName); byte[] imageData = file.OpenBinary(); targetItem.Attachments.Add(fileName, imageData); } targetItem["Title"] = sourceItem["Project"]; targetItem["Requirement Id"] = sourceItem["ID"]; targetItem["Project"] = sourceItem["Project"]; targetItem["Category"] = sourceItem["Category"]; //targetItem["Requirement fulfilled?"] = sourceItem["Requirement fulfilled?"]; targetItem["Requirement Compliance Status"] = sourceItem["Requirement Compliance Status"]; if (sourceItem["Name"] != null) { targetItem["Requirement Name"] = sourceItem["Name"]; } if (sourceItem["Completed Due Date"] != null && sourceItem["Completed Due Date"].ToString() != string.Empty) { targetItem["Notes on Reporting"] = sourceItem["Notes on Reporting"]; targetItem["Type of Due Date completed"] = sourceItem["Completed Due Date"]; targetItem["Reporting Due Date Closed"] = GetDueDateProd(sourceItem); string completionStatus = GetCompletionStatusProd(web, sourceItem, isDev); targetItem["Completion Status"] = completionStatus; //results["result"] = completionStatus; if (completionStatus == "Final" && sourceItem["Requirement Compliance Status"] != null && (sourceItem["Requirement Compliance Status"].ToString() == "I checked the requirement, the actions described below shall be undertaken" || sourceItem["Requirement Compliance Status"].ToString() == "I confirm the project complies with the requirement" || sourceItem["Requirement Compliance Status"].ToString() == "I confirm the project obtained from the lender appropriate waivers, and now complies with the requirement" || sourceItem["Requirement Compliance Status"].ToString() == "The project does not comply with the requirement, and actions described below should be undertaken")) { AddDraftAttachmentsProd(web, sourceItem, targetItem, isDev); } sourceItem[GetStatusFieldProd(sourceItem["Completed Due Date"].ToString()) + " Status"] = "InProgress"; string covStatus = GetCovenantStatusProd(sourceItem["Requirement Compliance Status"]); sourceItem[GetStatusFieldProd(sourceItem["Completed Due Date"].ToString()) + " Status Covenant"] = covStatus; if (covStatus == "Non-Compliant") { sourceItem["Covenant Compliance Status"] = GetReqCovenantStatusProd(sourceItem); } sourceItem["Completed Due Date"] = string.Empty; sourceItem["Notes on Reporting"] = string.Empty; sourceItem["Requirement Compliance Status"] = string.Empty; sourceItem.Update(); if (covStatus == "Non-Compliant") { GetLoanCovenantStatusProd(web, sourceItem, source, isDev); } } targetItem.Update(); results["result"] = targetItem["ID"]; using (DisabledItemEventsScope scope = new DisabledItemEventsScope()) { //CheckStatus(sourceItem, target); //CheckLoanStatus(web, sourceItem); for (int i = sourceItem.Attachments.Count; i > 0; i--) { sourceItem.Attachments.Delete(sourceItem.Attachments[i - 1]); } sourceItem.Update(); } } } } } } results["success"] = true; } catch (Exception e) { results = new Hashtable(); results["result"] = e.ToString(); results["success"] = false; } return(results); }
public Hashtable CheckOOBBreakdown(SPUserCodeWorkflowContext context, double breakdownValue, string breakdownType, string breakdownsListName, string annualBreakdownsListName, double annualPercent) { string res = string.Empty; string debugInfo = string.Empty; string s = string.Empty; Hashtable results = new Hashtable(); int oobYear = DateTime.Now.Year; bool success = true; string breakdownColumnName = OOBColumnIdentifier.GetColumnInternalNameByBreakdownType(breakdownType); if (breakdownValue != 0) { try { using (SPSite site = new SPSite(context.CurrentWebUrl)) { using (SPWeb web = site.OpenWeb()) { double sumBefore = 0; double sumAfter = 0; double percent = 0.05; double budget = 0; double percentTotal = annualPercent / 100; double budgetTotal = 0; SPList oobList = web.Lists[breakdownsListName]; if (oobList != null) { SPQuery oobQuery = new SPQuery(); oobQuery.Query = ""; /* * oobQuery.ViewXml = "<View>" + * "<ViewFields>" + * "<FieldRef Name='" + breakdownColumnName + "'/>" + * "</ViewFields>" + * "<Query>" + * "<Where><Eq><FieldRef Name='OOBAppro0'/><Value Type='WorkflowStatus'>16</Value></Eq></Where>" + * "</Query>" + * "</View>"; * */ oobQuery.ViewXml = "<View>" + "<ViewFields>" + "<FieldRef Name='" + breakdownColumnName + "'/>" + "</ViewFields>" + "<Query>" + "<Where>" + "<And>" + "<Eq>" + "<FieldRef Name='OOBAppro0' />" + "<Value Type='WorkflowStatus'>16</Value>" + "</Eq>" + "<And>" + "<Eq>" + "<FieldRef Name='Date_x0020_of_x0020_request' />" + "<Value IncludeTimeValue='FALSE' Type='DateTime'>" + oobYear.ToString() + "-01-01</Value>" + "</Eq>" + "<Eq>" + "<FieldRef Name='Date_x0020_of_x0020_request' />" + "<Value IncludeTimeValue='FALSE' Type='DateTime'>" + oobYear.ToString() + "-12-31</Value>" + "</Eq>" + "</And>" + "</And>" + "</Where>" + "</Query>" + "</View>"; SPListItemCollection items = oobList.GetItems(oobQuery); if (items != null) { //debugInfo += string.Format("Items({0}) count: {1}{2}", breakdownColumnName, items.Count, Environment.NewLine); s += "1"; foreach (SPListItem item in items) { sumBefore += item[breakdownColumnName] == null ? 0 : Convert.ToDouble(item[breakdownColumnName]); } } sumAfter = sumBefore + breakdownValue; //debugInfo += string.Format("Sum before: {0} Sum after: {1}{2}", sumBefore, sumAfter, Environment.NewLine); s += "2"; } else { res = "List(" + breakdownsListName + ") not found."; success = false; //debugInfo += "List(" + breakdownsListName + ") not found."; s += "3"; } SPList breakdownList = web.Lists[annualBreakdownsListName]; var breakdownQuery = new SPQuery(); breakdownQuery.ViewXml = "<View>" + "<Query>" + "</Query>" + "</View>"; SPListItemCollection breakdowns = breakdownList.GetItems(breakdownQuery); if (breakdowns != null) { //debugInfo += string.Format("Items(breakdowns types) count: {0}{1}", breakdowns.Count, Environment.NewLine); s += "4"; foreach (SPListItem breakdown in breakdowns) { s += "5"; string fl = (string)breakdown["Expense_x0020_Estimate_x0020_Bre"]; //debugInfo += fl; //debugInfo += "!"+new SPFieldLookupValue(fl).LookupValue+"!"; var flv = new SPFieldLookupValue(fl).LookupValue; s += "6"; if (breakdownType == flv) { percent = breakdown["Board_x0020_Major_x0020_Action_x"] == null ? 0 : Convert.ToDouble(breakdown["Board_x0020_Major_x0020_Action_x"]); budget = breakdown["Budget"] == null ? 0 : Convert.ToDouble(breakdown["Budget"]); //debugInfo += string.Format("Breakdown({0}) Percent: {1} Budget: {2}{3}", breakdownType, percent, budget, Environment.NewLine); s += "7"; } budgetTotal += breakdown["Budget"] == null ? 0 : Convert.ToDouble(breakdown["Budget"]); } //debugInfo += string.Format("Breakdown({0}) BudgetTotal: {1}{2}", breakdownType, budgetTotal, Environment.NewLine); s += "8"; } else { res = "List(" + annualBreakdownsListName + ") not found."; success = false; //debugInfo += "List(" + annualBreakdownsListName + ") not found."; s += "9"; } if (string.IsNullOrEmpty(res)) { if (Math.Round(sumAfter, 2, MidpointRounding.ToEven) > Math.Round(percent * budget, 2, MidpointRounding.ToEven) || Math.Round(sumAfter, 2, MidpointRounding.ToEven) > Math.Round(percentTotal * budgetTotal, 2, MidpointRounding.ToEven)) { res = "Exceed"; } else { res = "OK"; } //debugInfo += string.Format("Percent/Percent Total: {0}/{1}, {2}", percent, percentTotal, Environment.NewLine); //debugInfo += string.Format("Treshhold1: {0}, {1}", Math.Round(percent * budget, 2, MidpointRounding.ToEven), Environment.NewLine); //debugInfo += string.Format("Treshhold2: {0}, {1}", Math.Round(percentTotal * budgetTotal, 2, MidpointRounding.ToEven), Environment.NewLine); //debugInfo += res; s += "10"; } } } } catch (Exception e) { results = new Hashtable(); results["result"] = s + e.ToString() + debugInfo; results["success"] = false; //results["debugInfo"] = string.Format("{0} - {1}",debugInfo,e.Message); return(results); } } else { res = "OK-Zero";//no breakdown requested } results["result"] = res; //results["debugInfo"] = debugInfo; results["success"] = success; return(results); }
public Hashtable UpdateDueDates(SPUserCodeWorkflowContext context, string calendarName) { Hashtable results = new Hashtable(); results["result"] = string.Empty; try { using (SPSite site = new SPSite(context.CurrentWebUrl)) { using (SPWeb web = site.OpenWeb()) { SPList requirementsList = web.Lists["Requirements"]; SPList calendarList = web.Lists[calendarName]; if (requirementsList != null && calendarList != null) { using (DisabledItemEventsScope scope = new DisabledItemEventsScope()) { SPListItemCollection items = requirementsList.Items; foreach (SPListItem item in items) { int id = int.Parse(item["ID"].ToString()); if (id > 170 && id < 191) //temporary for tests only { if (item["Type of Due Date"] != null) { if (item["Type of Due Date"].ToString().Contains("Monthly")) { UpdateDate(item, "January", calendarList); UpdateDate(item, "February", calendarList); UpdateDate(item, "March", calendarList); UpdateDate(item, "April", calendarList); UpdateDate(item, "May", calendarList); UpdateDate(item, "June", calendarList); UpdateDate(item, "July", calendarList); UpdateDate(item, "August", calendarList); UpdateDate(item, "September", calendarList); UpdateDate(item, "October", calendarList); UpdateDate(item, "November", calendarList); UpdateDate(item, "December", calendarList); } else if (item["Type of Due Date"].ToString().Contains("Quarterly")) { UpdateDate(item, "1st Quarter", calendarList); UpdateDate(item, "2nd Quarter", calendarList); UpdateDate(item, "3rd Quarter", calendarList); UpdateDate(item, "4th Quarter", calendarList); } else if (item["Type of Due Date"].ToString().Contains("Semi-Annual")) { UpdateDate(item, "1st Semi-Annual", calendarList); UpdateDate(item, "2nd Semi-Annual", calendarList); } else if (item["Type of Due Date"].ToString().Contains("Annual")) { UpdateDate(item, "Annual", calendarList); } } } } } } } } results["success"] = true; } catch (Exception e) { results = new Hashtable(); results["result"] = e.ToString(); results["success"] = false; } return(results); }
public Hashtable CreateSite(SPUserCodeWorkflowContext context, string url, string title, string description, string template, int language, bool uniquePerm, bool inheritNav, bool topNav, bool quickNav) { Hashtable result = new Hashtable(); SPSite currentSite = null; SPWeb currentWeb = null; SPWeb newWeb = null; try { currentSite = new SPSite(context.CurrentWebUrl); currentWeb = currentSite.OpenWeb(); if (language == Int32.MinValue || language == -1) { language = currentWeb.Locale.LCID; } if (String.IsNullOrEmpty(template)) { template = "STS#0"; } var spTemplate = currentWeb.GetAvailableWebTemplates((uint)language).OfType <SPWebTemplate>().Where(t => t.Name == template).FirstOrDefault(); if (spTemplate == null) { spTemplate = currentWeb.GetAvailableWebTemplates((uint)language).OfType <SPWebTemplate>().Where(t => t.Title == template).FirstOrDefault(); } newWeb = currentWeb.Webs.Add(url, title, description, (uint)language, spTemplate, uniquePerm, false); newWeb.Navigation.UseShared = inheritNav; newWeb.Update(); if (topNav) { currentWeb.Navigation.TopNavigationBar.AddAsLast(new SPNavigationNode(title, newWeb.Url, false)); } if (quickNav) { currentWeb.Navigation.AddToQuickLaunch(new SPNavigationNode(title, newWeb.Url, false), SPQuickLaunchHeading.Sites); } result["output"] = newWeb.Url; result["error"] = String.Empty; } catch (Exception ex) { result["output"] = String.Empty; result["error"] = ex.Message; } finally { if (newWeb != null) { newWeb.Dispose(); } if (currentWeb != null) { currentWeb.Dispose(); } if (currentSite != null) { currentSite.Dispose(); } } return(result); }
private Hashtable DevMethod(SPUserCodeWorkflowContext context, string daysBefore, bool isDev) { Hashtable results = new Hashtable(); try { using (SPSite site = new SPSite(context.CurrentWebUrl)) { using (SPWeb web = site.OpenWeb()) { int days; if (int.TryParse(daysBefore, out days)) { SPList requirementsList = web.Lists["Requirements" + (isDev ? " Dev" : string.Empty)]; SPList emailList = web.Lists["Send Email" + (isDev ? " Dev" : string.Empty)]; if (requirementsList != null && emailList != null) { //using (DisabledItemEventsScope scope = new DisabledItemEventsScope()) //{ SPListItemCollection items = requirementsList.Items; foreach (SPListItem item in items) { //if (item["ID"].ToString() == "189" || item["ID"].ToString() == "190" || item["ID"].ToString() == "191") //temporary for tests only //{ if (item["Type of Due Date"] != null) { if (item["Type of Due Date"].ToString().Contains(";#Monthly;#")) { CheckDateDev(item, "January", days, emailList, isDev); CheckDateDev(item, "February", days, emailList, isDev); CheckDateDev(item, "March", days, emailList, isDev); CheckDateDev(item, "April", days, emailList, isDev); CheckDateDev(item, "May", days, emailList, isDev); CheckDateDev(item, "June", days, emailList, isDev); CheckDateDev(item, "July", days, emailList, isDev); CheckDateDev(item, "August", days, emailList, isDev); CheckDateDev(item, "September", days, emailList, isDev); CheckDateDev(item, "October", days, emailList, isDev); CheckDateDev(item, "November", days, emailList, isDev); CheckDateDev(item, "December", days, emailList, isDev); } if (item["Type of Due Date"].ToString().Contains(";#Quarterly;#")) { CheckDateDev(item, "1st Quarter", days, emailList, isDev); CheckDateDev(item, "2nd Quarter", days, emailList, isDev); CheckDateDev(item, "3rd Quarter", days, emailList, isDev); CheckDateDev(item, "4th Quarter", days, emailList, isDev); } if (item["Type of Due Date"].ToString().Contains(";#Semi-Annual;#")) { CheckDateDev(item, "1st Semi-Annual", days, emailList, isDev); CheckDateDev(item, "2nd Semi-Annual", days, emailList, isDev); } if (item["Type of Due Date"].ToString().Contains(";#Annual;#")) { CheckDateDev(item, "Annual", days, emailList, isDev); } } //} } //} } } } } results["result"] = result; results["success"] = true; } catch (Exception e) { results = new Hashtable(); results["result"] = e.ToString(); results["success"] = false; } return(results); }
//Not used public Hashtable SetItemPermissions(SPUserCodeWorkflowContext context, string id, string sourceList, string targetList) { Hashtable results = new Hashtable(); string result = string.Empty; try { using (SPSite site = new SPSite(context.CurrentWebUrl)) { using (SPWeb web = site.OpenWeb()) { int currentId; if (int.TryParse(id, out currentId)) { SPList target = web.Lists[targetList]; SPList source = web.Lists[sourceList]; if (target != null && source != null) { SPListItem targetItem = target.GetItemById(currentId); if (targetItem != null) { SPListItem listItem = GetParent(source, targetItem); //commented out as not used //string region = string.Empty; //if (listItem["Region"] != null) //{ // region = listItem["Region"].ToString(); //} string finance = string.Empty; if (listItem["Finance Organization"] != null) { finance = listItem["Finance Organization"].ToString(); } using (DisabledItemEventsScope scope = new DisabledItemEventsScope()) { if (!targetItem.HasUniqueRoleAssignments) { targetItem.BreakRoleInheritance(true); } foreach (SPRoleAssignment assignment in targetItem.RoleAssignments) { assignment.RoleDefinitionBindings.RemoveAll(); assignment.Update(); } if (targetItem["Created By"] != null) { GetSPUserObject(targetItem, "Created By", targetItem, web.RoleDefinitions.GetByType(SPRoleType.Contributor)); } if (listItem["Responsible"] != null) { GetSPUserObject(listItem, "Responsible", targetItem, web.RoleDefinitions.GetByType(SPRoleType.Contributor)); } if (listItem["Responsible 2"] != null) { GetSPUserObject(listItem, "Responsible 2", targetItem, web.RoleDefinitions.GetByType(SPRoleType.Contributor)); } if (listItem["Person in charge"] != null) { GetSPUserObject(listItem, "Person in charge", targetItem, web.RoleDefinitions.GetByType(SPRoleType.Contributor)); } if (listItem["Approver"] != null) { GetSPUserObject(listItem, "Approver", targetItem, web.RoleDefinitions.GetByType(SPRoleType.Contributor)); } AddSecondApprover(listItem, targetItem, web.RoleDefinitions.GetByType(SPRoleType.Contributor)); if (finance != string.Empty) { AddPermissions(targetItem, web.Groups.GetByName("CG Debts " + finance + " Admins"), web.RoleDefinitions.GetByType(SPRoleType.Contributor)); } AddPermissions(targetItem, web.Groups.GetByName("CG Debts Corporate Level"), web.RoleDefinitions.GetByType(SPRoleType.Contributor)); } } } } } } results["success"] = true; } catch (Exception e) { results = new Hashtable(); result += e.ToString(); results["success"] = false; } results["result"] = result; return(results); }
private Hashtable ProductionMethod(SPUserCodeWorkflowContext context, string id, string historyId, bool isDev) { Hashtable results = new Hashtable(); results["result"] = string.Empty; try { using (SPSite site = new SPSite(context.CurrentWebUrl)) { using (SPWeb web = site.OpenWeb()) { int currentId; int currentHistoryId; if (int.TryParse(id, out currentId) && int.TryParse(historyId, out currentHistoryId)) { SPList loanList = web.Lists["Loan" + (isDev ? " Dev" : string.Empty)]; SPList requirementsList = web.Lists["Requirements" + (isDev ? " Dev" : string.Empty)]; SPList historyList = web.Lists["CG Debts History" + (isDev ? " Dev" : string.Empty)]; if (loanList != null && requirementsList != null && historyList != null) { SPListItem sourceItem = requirementsList.GetItemById(currentId); SPListItem historyItem = historyList.GetItemById(currentHistoryId); if (sourceItem != null && historyItem != null && historyItem["Type of Due Date completed"] != null) { //using (DisabledItemEventsScope scope = new DisabledItemEventsScope()) //{ string typeDueDate = historyItem["Type of Due Date completed"].ToString(); sourceItem[GetStatusFieldProd(typeDueDate) + " Status"] = historyItem["Completion Status"]; bool shouldUpdateLoanStatus = false; if (historyItem["Completion Status"] != null && historyItem["Completion Status"].ToString() == "Final") { DateTime oldDate; if (sourceItem[GetStatusFieldProd(typeDueDate)] != null && DateTime.TryParse((sourceItem[GetStatusFieldProd(typeDueDate)].ToString()), out oldDate)) { sourceItem[GetStatusFieldProd(typeDueDate)] = oldDate.AddYears(1); } sourceItem[GetStatusFieldProd(typeDueDate) + " Status"] = string.Empty; sourceItem["Due Date Compliance Status"] = GetReqStatusProd(sourceItem); shouldUpdateLoanStatus = true; sourceItem[GetStatusFieldProd(typeDueDate) + " Status Covenant"] = "Compliant"; historyItem["CovStatus"] = "Approved"; historyItem.Update(); UpdateDraftHistoryStatusProd(web, historyItem, isDev); } if (shouldUpdateLoanStatus) { GetIsCureProd(sourceItem); } sourceItem["Covenant Compliance Status"] = GetReqCovenantStatusProd(sourceItem); sourceItem.Update(); results["result"] = "ReqUpd - " + GetStatusFieldProd(typeDueDate) + " Status - " + historyItem["Completion Status"]; int projId; if (shouldUpdateLoanStatus && sourceItem["Project Id"] != null && int.TryParse(sourceItem["Project Id"].ToString(), out projId)) { SPListItem loanItem = loanList.GetItemById(projId); if (loanItem != null) { shouldUpdateLoanStatus = false; string oldLoanStatus = loanItem["Due Date Compliance Status"] == null ? "" : loanItem["Due Date Compliance Status"].ToString(); string newLoanStatus = GetLoanStatusProd(loanItem, requirementsList); if (oldLoanStatus != newLoanStatus) { loanItem["Due Date Compliance Status"] = newLoanStatus; shouldUpdateLoanStatus = true; } oldLoanStatus = loanItem["Covenant Compliance Status"] == null ? "" : loanItem["Covenant Compliance Status"].ToString(); newLoanStatus = GetLoanCovenantStatusProd(loanItem, requirementsList); if (oldLoanStatus != newLoanStatus) { loanItem["Covenant Compliance Status"] = newLoanStatus; shouldUpdateLoanStatus = true; } oldLoanStatus = loanItem["IsInCurePeriod"] == null ? "" : loanItem["IsInCurePeriod"].ToString(); newLoanStatus = GetLoanCureStatusProd(loanItem, requirementsList); if (oldLoanStatus != newLoanStatus) { loanItem["IsInCurePeriod"] = newLoanStatus; shouldUpdateLoanStatus = true; } if (shouldUpdateLoanStatus) { loanItem.Update(); } } } //} } } } } } results["success"] = true; } catch (Exception e) { results = new Hashtable(); results["result"] += e.ToString(); results["success"] = false; } return(results); }
public Hashtable UpdateChildrenPermissionsInAmortizationSchedules(SPUserCodeWorkflowContext context, string id, string sourceList, string targetList) { Hashtable results = new Hashtable(); try { using (SPSite site = new SPSite(context.CurrentWebUrl)) { using (SPWeb web = site.OpenWeb()) { int currentId; if (int.TryParse(id, out currentId)) { SPList source = web.Lists[sourceList]; SPList target = web.Lists[targetList]; if (source != null && target != null) { SPListItem sourceListItem = source.GetItemById(currentId); if (sourceListItem != null) { string finance = string.Empty; string scheduleField = string.Empty; string fnFinance = "Finance Organization"; string fnSchedule = "Amortization Schedule"; if (sourceListItem[fnFinance] != null) { finance = sourceListItem[fnFinance].ToString(); } if (sourceListItem[fnSchedule] != null) { scheduleField = sourceListItem[fnSchedule].ToString(); string scheduleWebAddress = GetWebAddressFromUrlField(scheduleField); string documentName = GetDocumentName(scheduleWebAddress); if (!string.IsNullOrEmpty(documentName)) { SPListItemCollection relatedListItems = GetChildren(target, documentName); res += "Document name is: " + documentName + ". "; res += "The count of found files is: " + relatedListItems.Count + ". "; if (relatedListItems.Count > 0) { LoadManagers(sourceListItem); using (DisabledItemEventsScope scope = new DisabledItemEventsScope()) { foreach (SPListItem relatedListItem in relatedListItems) { BreakInheritenceAndUpdateItemPermissions(web, finance, relatedListItem); } } } } } } } else { res += "Lists or one of them are null. "; } } } } } catch (Exception e) { results = new Hashtable(); res += e.ToString(); results["success"] = false; } results["result"] = res; return(results); }
public Hashtable GetAssistantEmails(SPUserCodeWorkflowContext context, string signatories, string signatoriesEmails, string listName, string id, string sourceList) { Hashtable results = new Hashtable(); results["result"] = string.Empty; //debug += string.Format("Signatories: {0} SignatoriesEmails: {1} ListName: {2} Id: {3} SourceList: {4}", signatories, signatoriesEmails, listName, id, sourceList); List <string> processedUsers = new List <string>(); try { if (!string.IsNullOrEmpty(signatories) && !string.IsNullOrEmpty(signatoriesEmails)) { string[] arrSignatories = signatories.Split(new char[] { ';' }); string[] arrSignatoriesEmails = signatoriesEmails.Split(new char[] { ';' }); SPQuery camlQuery = new SPQuery(); camlQuery.Query = "<Where>" + ToCamlIn(arrSignatories, "Signatory", "User") + "</Where>"; SPListItemCollection items = SPListHelper.GetListItemsByQuery(listName, camlQuery, context.CurrentWebUrl); /* * if (items == null) * { * debug += string.Format("List with name {0} not found", listName); * } */ foreach (SPListItem item in items) { List <SPUser> users = GetSPUserObject(item, "Assistant"); foreach (SPUser user in users) { res += user.Email + ";"; SetPermissionsForAssistant(context, user.LoginName, id, sourceList); } List <SPUser> procUsers = GetSPUserObject(item, "Signatory"); foreach (SPUser processedUser in procUsers) { processedUsers.Add(processedUser.Email); } } foreach (string signatoryEmail in arrSignatoriesEmails) { if (!processedUsers.Contains(signatoryEmail)) { res += signatoryEmail + ";"; } } res = res.TrimEnd(new char[] { ';' }); } results["success"] = true; } catch (Exception e) { results = new Hashtable(); res += e.ToString(); //debug += string.Format("Error: {0}", e.ToString()); results["success"] = false; } //results["debug"] = debug; results["result"] = res; return(results); }
public Hashtable SetItemFullPermissionsQoBC(SPUserCodeWorkflowContext context, string id, string sourceList) { Hashtable results = new Hashtable(); results["result"] = string.Empty; string result = string.Empty; try { using (SPSite site = new SPSite(context.CurrentWebUrl)) { using (SPWeb web = site.OpenWeb()) { int currentId; if (int.TryParse(id, out currentId)) { SPList list = web.Lists[sourceList]; if (list != null) { SPListItem item = list.GetItemById(currentId); if (item != null) { using (DisabledItemEventsScope scope = new DisabledItemEventsScope()) { if (!item.HasUniqueRoleAssignments) { item.BreakRoleInheritance(true); } foreach (SPRoleAssignment assignment in item.RoleAssignments) { assignment.RoleDefinitionBindings.RemoveAll(); assignment.Update(); } SPRoleDefinition roleDefinition = web.RoleDefinitions["Full Control"]; GetSPUserObject(item, "Created By", roleDefinition); SPGroup group = web.Groups["QoBCAdmins"]; if (group != null) { AddPermissions(item, group, roleDefinition); } //SPRoleDefinition roleDefinitionContribute = web.RoleDefinitions["Contribute"]; SPRoleDefinition roleDefinitionContribute = web.RoleDefinitions.GetByType(SPRoleType.Contributor); // For Contribute SPGroup groupResponders = web.Groups["QoBCResponders"]; if (groupResponders != null) { AddPermissions(item, groupResponders, roleDefinitionContribute); } } } } } } } results["success"] = true; } catch (Exception e) { results = new Hashtable(); result += e.ToString(); results["success"] = false; } results["result"] = result; return(results); }