예제 #1
0
        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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
                sbErrors.Append(infoMessage);
            }

            foreach (var errorMessage in processingResult.ErrorMessages)
            {
                bErrors = true;
                sbErrors.Append("...<font color=\"red\">Error: ")
                .Append(errorMessage)
                .Append("</font>");
            }
        }
예제 #2
0
        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;
            }
        }