private void processResPlan(SPWeb web, string resPlanLists, Guid siteId, int hours, string workdays) { var resourceUrl = getResUrl(EPMLiveCore.CoreFunctions.getConfigSetting(web, "EPMLiveResourceURL")); var processingResult = ResourcePlan.ProcessResourcePlan( resourceUrl, web, resPlanLists, siteId, hours, workdays); foreach (var resourceLinkRow in processingResult.ResourceLinkRows) { dtResLink.Rows.Add(resourceLinkRow); } foreach (var resourceInfoRow in processingResult.ResourceInfoRows) { dtResInfo.Rows.Add(resourceInfoRow); } foreach (var infoMessage in processingResult.InfoMessages) { sbErrors.Append("<br> "); sbErrors.Append(infoMessage); } foreach (var errorMessage in processingResult.ErrorMessages) { bErrors = true; sbErrors.Append("...<font color=\"red\">Error: ") .Append(errorMessage) .Append("</font>"); } }
public void execute(SPSite site, SPWeb web, string data) { sbErrors = new StringBuilder(); try { WebAppId = site.WebApplication.Id; SqlConnection cn; Guid ResJobUid = Guid.Empty; try { queuetype = 2; if (!initJob(site)) { return; } //==================Code=================== string resPlanLists = EPMLiveCore.CoreFunctions.getConfigSetting(site.RootWeb, "EPMLiveResPlannerLists"); //string sFixLists = EPMLiveCore.CoreFunctions.getConfigSetting(site.RootWeb, "EPMLiveFixLists"); string sFixLists = "Resources"; using (cn = CreateConnection()) { try { SPSecurity.RunWithElevatedPrivileges(delegate() { cn.Open(); }); using (SqlCommand cmd = new SqlCommand("DELETE FROM RESINFO where siteid=@siteid", cn)) { cmd.Parameters.AddWithValue("@siteid", site.ID); cmd.ExecuteNonQuery(); } using (SqlCommand cmd1 = new SqlCommand("DELETE FROM RESLINK where siteid=@siteid or siteid in (select siteid from reslink where weburl=@weburl)", cn)) { cmd1.Parameters.AddWithValue("@siteid", site.ID); cmd1.Parameters.AddWithValue("@weburl", site.ServerRelativeUrl); cmd1.ExecuteNonQuery(); } using (SqlCommand cmd2 = new SqlCommand("select timerjobuid from vwQueueTimer where siteguid=@siteguid and jobtype=1", cn)) { cmd2.Parameters.AddWithValue("@siteguid", site.ID); using (SqlDataReader dr = cmd2.ExecuteReader()) { if (dr.Read()) { ResJobUid = dr.GetGuid(0); } } } } catch (Exception ex) { bErrors = true; sErrors = ex.ToString(); } } dtResInfo = ResourcePlan.BuildResourceInfoDataTable(); dtResLink = ResourcePlan.BuildResourceLinkDataTable(); int hours = 0; string workdays = " "; SPSecurity.RunWithElevatedPrivileges(delegate() { int startHour = site.RootWeb.RegionalSettings.WorkDayStartHour / 60; int endHour = site.RootWeb.RegionalSettings.WorkDayEndHour / 60; hours = endHour - startHour - 1; int work = site.RootWeb.RegionalSettings.WorkDays; for (byte x = 0; x < 7; x++) { workdays = ((((work >> x) & 0x01) == 0x01) ? "" : "," + (7 - x)) + workdays; } }); if (workdays.Length > 1) { workdays = workdays.Substring(1); } float counter = 0; base.totalCount = site.AllWebs.Count; if (sFixLists.Trim().Length > 0) { string[] arLists = sFixLists.Replace("\r\n", "\n").Split('\n'); base.totalCount = base.totalCount * arLists.Length; } foreach (SPWeb w in site.AllWebs) { try { sbErrors.Append("<br>Processing Web: " + w.Title + " (" + w.ServerRelativeUrl + ")"); sResErrors += "<br>Processing Web: " + w.Title + " (" + w.ServerRelativeUrl + ")"; processWeb(w, sFixLists, ref counter); processResPlan(w, resPlanLists, site.ID, hours, workdays); } catch { } finally { if (w != null) { w.Dispose(); } } } //========================================= } catch (Exception ex) { bErrors = true; sbErrors.Append("Execute Error: " + ex.Message); } //Already Called in TimerClass.cs //finishJob(); using (cn = CreateConnection()) { try { SPSecurity.RunWithElevatedPrivileges(delegate() { cn.Open(); }); storeResPlanInfo(); if (ResJobUid != Guid.Empty) { //cmd.ExecuteNonQuery(); using (SqlCommand cmd = new SqlCommand("update queue set status = 2, dtfinished=GETDATE() where timerjobuid=@timerjobuid", cn)) { cmd.Parameters.AddWithValue("@timerjobuid", ResJobUid); cmd.ExecuteNonQuery(); } using (SqlCommand cmd1 = new SqlCommand("DELETE FROM EPMLIVE_LOG where timerjobuid=@timerjobuid", cn)) { cmd1.Parameters.AddWithValue("@timerjobuid", ResJobUid); cmd1.ExecuteNonQuery(); } using (SqlCommand cmd2 = new SqlCommand("INSERT INTO EPMLIVE_LOG (timerjobuid,result,resulttext) VALUES (@timerjobuid,@result,@resulttext)", cn)) { if (bResErrors) { cmd2.Parameters.AddWithValue("@result", "Errors"); } else { cmd2.Parameters.AddWithValue("@result", "No Errors"); } cmd2.Parameters.AddWithValue("@resulttext", sResErrors); cmd2.Parameters.AddWithValue("@timerjobuid", ResJobUid); cmd2.ExecuteNonQuery(); } } } catch (Exception ex) { bErrors = true; sErrors = ex.Message; } } } catch (Exception ex) { throw ex; } finally { sErrors += sbErrors.ToString(); sbErrors = null; if (web != null) { web.Dispose(); } if (site != null) { site.Dispose(); } data = null; } }