public void UploadFile(string srcUrl, string destUrl) { if (! File.Exists(srcUrl)) { FileErrorLogger _logger = new FileErrorLogger(); _logger.LogError(String.Format("{0} does not exist", srcUrl), ErrorLogSeverity.SeverityError, ErrorType.TypeApplication, "TeamSiteReports.UploadFile()"); _logger = null; } SPWeb site = new SPSite(destUrl).OpenWeb(); try { FileStream fStream = File.OpenRead(srcUrl); byte[] contents = new byte[fStream.Length]; fStream.Read(contents, 0, (int)fStream.Length); fStream.Close(); site.Files.Add(destUrl, contents,true); } catch(SPException spe) { FileErrorLogger _logger = new FileErrorLogger(); _logger.LogError(spe.Message+srcUrl, ErrorLogSeverity.SeverityError, ErrorType.TypeApplication, "TeamSiteReports.UploadFile()"); _logger = null; } catch(Exception e) { Object thisLock = new Object(); lock (thisLock) { FileErrorLogger _logger = new FileErrorLogger(); _logger.LogError(e.Message+srcUrl, ErrorLogSeverity.SeverityError, ErrorType.TypeApplication, "TeamSiteReports.UploadFile()"); _logger = null; } } finally { if (site !=null) site.Dispose(); } }
public override void GenerateReport() { TeamSiteFile tf = new TeamSiteFile(); string fileName = System.Configuration.ConfigurationSettings.AppSettings["TeamSiteReports.TeamSiteLastModifiedReportLocation"]; string lastModified; StreamWriter fwriter = File.CreateText( fileName ); Console.WriteLine("Creating file "+System.Configuration.ConfigurationSettings.AppSettings["TeamSiteReports.TeamSiteLastModifiedReportLocation"]); HtmlTextWriter txtWriter=new HtmlTextWriter(fwriter); HtmlTable reportHtmlTable = new HtmlTable(); reportHtmlTable.BgColor = System.Drawing.ColorTranslator.ToHtml(System.Drawing.Color.White); reportHtmlTable.Border = 1; reportHtmlTable.BorderColor = System.Drawing.ColorTranslator.ToHtml(System.Drawing.Color.LightGray ); reportHtmlTable.Style.Add("font-family", "Verdana"); reportHtmlTable.Style.Add("font-size", "9pt"); HtmlTableRow trMessage = new HtmlTableRow(); HtmlTableCell tcMessage = new HtmlTableCell(); tcMessage.ColSpan = 4; tcMessage.InnerText = @"Last run: " + System.DateTime.Now.ToString(); tcMessage.Style.Add("font-style","italic"); trMessage.Cells.Add(tcMessage); reportHtmlTable.Rows.Add(trMessage); reportHtmlTable.BgColor = System.Drawing.ColorTranslator.ToHtml(System.Drawing.Color.White); reportHtmlTable.Border = 1; reportHtmlTable.BorderColor = System.Drawing.ColorTranslator.ToHtml(System.Drawing.Color.LightGray ); reportHtmlTable.Style.Add("font-family", "Verdana"); reportHtmlTable.Style.Add("font-size", "9pt"); HtmlTableRow trHeader = new HtmlTableRow(); trHeader.Style.Add("font-weight","bold"); //teamsite name HtmlTableCell tcHeader1 = new HtmlTableCell(); tcHeader1.InnerText = "teamsite name"; trHeader.Cells.Add(tcHeader1); //teamsite url HtmlTableCell tcHeader2 = new HtmlTableCell(); tcHeader2.InnerText = "teamsite url"; trHeader.Cells.Add(tcHeader2); //teamsite brand HtmlTableCell tcHeader3 = new HtmlTableCell(); tcHeader3.InnerText = "brand"; trHeader.Cells.Add(tcHeader3); //teamsite lastModified HtmlTableCell tcHeader4 = new HtmlTableCell(); tcHeader4.InnerText = "last modified"; trHeader.Cells.Add(tcHeader4); reportHtmlTable.Rows.Add(trHeader); Console.WriteLine("Connecting to site..."); SPSite siteCollection = new SPSite(System.Configuration.ConfigurationSettings.AppSettings["TeamSiteReports.TeamSiteUrl"]); SPWebCollection sites = siteCollection.AllWebs; try { foreach (SPWeb site in sites) { lastModified = "01/01/1900 01:01:01"; //go through the lists in the site for the later lastmodified date foreach (SPList list in site.Lists) { if (System.DateTime.Parse(lastModified) < list.LastItemModifiedDate) lastModified = list.LastItemModifiedDate.ToString(); } Console.WriteLine("Site:"+site.Name+" last modified:"+lastModified); HtmlTableRow trData = new HtmlTableRow(); //teamsite name HtmlTableCell tcData1 = new HtmlTableCell(); tcData1.InnerText = site.Name; trData.Cells.Add(tcData1); //teamsite url HtmlTableCell tcData2 = new HtmlTableCell(); HtmlAnchor ha1 = new HtmlAnchor(); ha1.InnerText=site.Url; ha1.HRef=site.Url; tcData2.Controls.Add(ha1); trData.Cells.Add(tcData2); //teamsite brand HtmlTableCell tcData3 = new HtmlTableCell(); string brand = site.Url.ToString(); try { string[] ary = brand.Split('/'); tcData3.InnerText = ary[3].ToString(); // e.g. http:///blahblah fourth index will contain the brand } catch //the url may not contain the brand for instance the top level site { tcData3 .InnerText = "na"; } trData.Cells.Add(tcData3); //teamsite last modified date HtmlTableCell tcData4 = new HtmlTableCell(); tcData4.InnerText = lastModified; trData.Cells.Add(tcData4); reportHtmlTable.Rows.Add(trData); site.Dispose(); } } catch (Exception ex) { FileErrorLogger _logger = new FileErrorLogger(); _logger.LogError(ex.Message, ErrorLogSeverity.SeverityError, ErrorType.TypeApplication, "TeamSiteReports.UploadFile()"); _logger = null; } finally { siteCollection.Dispose(); } reportHtmlTable.RenderControl(txtWriter); txtWriter.Close(); tf.UploadFile(System.Configuration.ConfigurationSettings.AppSettings["TeamSiteReports.TeamSiteLastModifiedReportLocation"], System.Configuration.ConfigurationSettings.AppSettings["TeamSiteReports.TeamSiteLastModifiedReportDestination"]); }
// The method that is called to invoke our task. public override bool Execute() { if (InputFiles == null) { return(true); } var outCodeItems = new List <TaskItem>(); var outResItems = new List <TaskItem>(); string generatorName = typeof(JsonResourceGenerator).FullName; string generatorVersion = typeof(JsonResourceGenerator).GetTypeInfo().Assembly.GetName().Version.ToString(); // loop over all the .resj files we were given foreach (var iFile in InputFiles) { var fn = Path.GetFileNameWithoutExtension(iFile.ItemSpec); var culturePart = Path.GetExtension(fn); var hasCulture = false; if (culturePart?.Length > 1) { culturePart = culturePart.Substring(1); hasCulture = Culture.IsValidCulture(culturePart); } var fileDir = Path.GetDirectoryName(iFile.ItemSpec); var filePath = iFile.ItemSpec; var logger = new FileErrorLogger(this, filePath); // load the Json from the file var text = File.ReadAllText(filePath); var json = new JsonReader(new StringReader(text), logger.JsonError); var doc = JsonDocument.Load(json); if (doc.RootNode == null) { logger.ParseError("Failed to parse json text.", doc); continue; } if (doc.RootNode.NodeType != JsonNodeType.Object) { logger.ParseError("Expected object as root node.", doc.RootNode); continue; } var root = (JsonObject)doc.RootNode; var resName = iFile.GetMetadata("ResourceName"); if (string.IsNullOrEmpty(resName)) { resName = Path.GetFileNameWithoutExtension(iFile.ItemSpec); } var resourceName = resName + ".resources"; Directory.CreateDirectory(OutputPath); // write the generated C# code and resources file. if (!hasCulture) { var codeFile = Path.Combine(OutputPath, iFile.ItemSpec + ".g.cs"); var access = iFile.GetMetadata("AccessModifier"); var noCodeGen = StringComparer.OrdinalIgnoreCase.Equals(access, AccessNoCodeGen); if (!noCodeGen) { var isPublic = StringComparer.OrdinalIgnoreCase.Equals(access, AccessPublic); var ns = iFile.GetMetadata("Namespace"); string className = Path.GetFileNameWithoutExtension(iFile.ItemSpec); outCodeItems.Add(new TaskItem(codeFile)); Directory.CreateDirectory(Path.GetDirectoryName(codeFile)); using (var oStream = new FileStream(codeFile, FileMode.Create)) using (var w = new StreamWriter(oStream)) { if (!string.IsNullOrEmpty(ns)) { w.WriteLine($"namespace {ns} {{"); w.WriteLine(); } // very simplistic resource accessor class mostly duplicated from resx output. w.Write($@"using global::System.Reflection; /// <summary> /// A strongly-typed resource class, for looking up localized strings, etc. /// </summary> [global::System.Diagnostics.DebuggerNonUserCode()] [global::System.CodeDom.Compiler.GeneratedCodeAttribute(""{generatorName}"", ""{generatorVersion}"")] {(isPublic ? "public " : string.Empty)}static partial class {className} {{ static global::System.Resources.ResourceManager rm; static global::System.Globalization.CultureInfo resourceCulture; static global::System.Resources.ResourceManager ResourceManager {{ get {{ if (object.ReferenceEquals(rm, null)) {{ rm = new global::System.Resources.ResourceManager(""{resName}"", typeof({className}).GetTypeInfo().Assembly); }} return rm; }} }} static global::System.Globalization.CultureInfo Culture {{ get {{ return resourceCulture; }} set {{ resourceCulture = value; }} }} "); foreach (var section in root.Keys) { var value = root[section]; switch (section) { case "Strings": case "Files": if (value.NodeType == JsonNodeType.Object) { var obj = (JsonObject)value; foreach (var item in obj) { string comment = null; if (section == "Strings") { // https://stackoverflow.com/a/19498780 string stringValue = new XText(((JsonString)item.Value).Value).ToString(); comment = $"Looks up a localized string similar to {stringValue.Substring(0, Math.Min(stringValue.Length, 100))}"; } else if (section == "Files") { comment = $"Looks up a {item.Key} text file"; } if (comment != null) { IEnumerable <string> commentLines = comment.Split(new[] { "\r", "\n", "\r\n" }, StringSplitOptions.None); w.Write($@" /// <summary> /// {string.Join(Environment.NewLine + " /// ", commentLines)}. /// </summary>"); } w.Write($@" public static string {item.Key} {{ get {{ return ResourceManager.GetString(""{item.Key}"", resourceCulture); }} }} "); } } else { //logger.ParseError("Expected Json object.", value); } break; default: //logger.ParseError("Unexpected property.", value); break; } } w.WriteLine("}"); if (!string.IsNullOrEmpty(ns)) { w.WriteLine(); w.WriteLine("}"); } } } } // prepare the generated files we are about to write. var resFile = Path.Combine(OutputPath, resourceName); var resItem = new TaskItem(resFile); resItem.SetMetadata("LogicalName", resName + ".resources"); resItem.SetMetadata("ManifestResourceName", resourceName); resItem.SetMetadata("OutputResource", resourceName); resItem.SetMetadata("WithCulture", hasCulture ? "true" : "false"); resItem.SetMetadata("Type", "Non-Resx"); outResItems.Add(resItem); if (hasCulture) { resItem.SetMetadata("Culture", culturePart); } else { } json = new JsonReader(new StringReader(text), logger.JsonError); using (var rw = new System.Resources.ResourceWriter(resFile)) { foreach (var section in root.Keys) { var sectionNode = root[section]; var isFile = false; switch (section) { case "Strings": isFile = false; break; case "Files": isFile = true; break; default: logger.ParseError("Unexpected section.", sectionNode); continue; } if (sectionNode.NodeType != JsonNodeType.Object) { logger.ParseError("Expected json object", sectionNode); continue; } var sectionObj = (JsonObject)sectionNode; foreach (var key in sectionObj.Keys) { var str = sectionObj[key]; if (str.NodeType != JsonNodeType.String) { logger.ParseError("Expected string value", str); continue; } var strVal = (JsonString)str; string txt; if (isFile) { var textFilePath = Path.Combine(fileDir, strVal.Value); if (!File.Exists(textFilePath)) { logger.ParseError("Resource file '" + strVal.Value + "' not found.", str); continue; } try { using (var iStream = File.OpenRead(textFilePath)) using (var reader = new StreamReader(iStream)) { txt = reader.ReadToEnd(); } } catch (Exception e) { logger.ParseError(e.Message, str); continue; } } else { txt = strVal.Value; } // write our string to the resources binary rw.AddResource(key, txt); } } } } // put the artifacts we created in the output properties. OutputCode = outCodeItems.ToArray(); OutputResources = outResItems.ToArray(); return(!hasError); }
// The method that is called to invoke our task. public override bool Execute() { if (InputFiles == null) { return(true); } var outCodeItems = new List <TaskItem>(); var outResItems = new List <TaskItem>(); // loop over all the .resj files we were given foreach (var iFile in InputFiles) { var fn = Path.GetFileNameWithoutExtension(iFile.ItemSpec); var culturePart = Path.GetExtension(fn); var hasCulture = false; if (culturePart?.Length > 1) { culturePart = culturePart.Substring(1); hasCulture = Culture.IsValidCulture(culturePart); } var fileDir = Path.GetDirectoryName(iFile.ItemSpec); var filePath = iFile.ItemSpec; var logger = new FileErrorLogger(this, filePath); // load the Json from the file var text = File.ReadAllText(filePath); var json = new JsonReader(new StringReader(text), logger.JsonError); var doc = JsonDocument.Load(json); if (doc.RootNode == null) { logger.ParseError("Failed to parse json text.", doc); continue; } if (doc.RootNode.NodeType != JsonNodeType.Object) { logger.ParseError("Expected object as root node.", doc.RootNode); continue; } var root = (JsonObject)doc.RootNode; var resName = iFile.GetMetadata("ResourceName"); if (string.IsNullOrEmpty(resName)) { resName = Path.GetFileNameWithoutExtension(iFile.ItemSpec); } var resourceName = resName + ".resources"; Directory.CreateDirectory(OutputPath); // write the generated C# code and resources file. if (!hasCulture) { var codeFile = Path.Combine(OutputPath, iFile.ItemSpec + ".g.cs"); var access = iFile.GetMetadata("AccessModifier"); var noCodeGen = StringComparer.OrdinalIgnoreCase.Equals(access, AccessNoCodeGen); if (!noCodeGen) { var isPublic = StringComparer.OrdinalIgnoreCase.Equals(access, AccessPublic); var ns = iFile.GetMetadata("Namespace"); string className = Path.GetFileNameWithoutExtension(iFile.ItemSpec); outCodeItems.Add(new TaskItem(codeFile)); Directory.CreateDirectory(Path.GetDirectoryName(codeFile)); using (var oStream = new FileStream(codeFile, FileMode.Create)) using (var w = new StreamWriter(oStream)) { if (!string.IsNullOrEmpty(ns)) { w.WriteLine("namespace " + ns + " {"); } // very simplistic resource accessor class mostly duplicated from resx output. w.WriteLine("using global::System.Reflection;"); if (isPublic) { w.Write("public "); } w.WriteLine("static partial class " + className + " { "); w.WriteLine("static global::System.Resources.ResourceManager rm;"); w.WriteLine("static global::System.Globalization.CultureInfo resourceCulture;"); w.WriteLine("static global::System.Resources.ResourceManager ResourceManager {"); w.WriteLine("get {"); w.WriteLine("if(object.ReferenceEquals(rm, null)) {"); w.WriteLine("rm = new global::System.Resources.ResourceManager(\"" + resName + "\", typeof(" + className + ").GetTypeInfo().Assembly);"); w.WriteLine("}"); w.WriteLine("return rm;"); w.WriteLine("}"); w.WriteLine("}"); w.WriteLine("static global::System.Globalization.CultureInfo Culture {"); w.WriteLine("get {"); w.WriteLine("return resourceCulture;"); w.WriteLine("}"); w.WriteLine("set {"); w.WriteLine("resourceCulture = value;"); w.WriteLine("}"); w.WriteLine("}"); foreach (var section in root.Keys) { var value = root[section]; switch (section) { case "Strings": case "Files": if (value.NodeType == JsonNodeType.Object) { var obj = (JsonObject)value; foreach (var key in obj.Keys) { w.WriteLine("public static string " + key + " {"); w.WriteLine("get {"); w.WriteLine("return ResourceManager.GetString(\"" + key + "\", resourceCulture);"); w.WriteLine("}"); w.WriteLine("}"); } } else { //logger.ParseError("Expected Json object.", value); } break; default: //logger.ParseError("Unexpected property.", value); break; } } w.WriteLine("}"); if (!string.IsNullOrEmpty(ns)) { w.WriteLine("}"); } } } } // prepare the generated files we are about to write. var resFile = Path.Combine(OutputPath, resourceName); var resItem = new TaskItem(resFile); resItem.SetMetadata("LogicalName", resName + ".resources"); resItem.SetMetadata("ManifestResourceName", resourceName); resItem.SetMetadata("OutputResource", resourceName); resItem.SetMetadata("WithCulture", hasCulture ? "true" : "false"); resItem.SetMetadata("Type", "Non-Resx"); outResItems.Add(resItem); if (hasCulture) { resItem.SetMetadata("Culture", culturePart); } else { } json = new JsonReader(new StringReader(text), logger.JsonError); using (var rw = new System.Resources.ResourceWriter(resFile)) { foreach (var section in root.Keys) { var sectionNode = root[section]; var isFile = false; switch (section) { case "Strings": isFile = false; break; case "Files": isFile = true; break; default: logger.ParseError("Unexpected section.", sectionNode); continue; } if (sectionNode.NodeType != JsonNodeType.Object) { logger.ParseError("Expected json object", sectionNode); continue; } var sectionObj = (JsonObject)sectionNode; foreach (var key in sectionObj.Keys) { var str = sectionObj[key]; if (str.NodeType != JsonNodeType.String) { logger.ParseError("Expected string value", str); continue; } var strVal = (JsonString)str; string txt; if (isFile) { var textFilePath = Path.Combine(fileDir, strVal.Value); if (!File.Exists(textFilePath)) { logger.ParseError("Resource file '" + strVal.Value + "' not found.", str); continue; } try { using (var iStream = File.OpenRead(textFilePath)) using (var reader = new StreamReader(iStream)) { txt = reader.ReadToEnd(); } } catch (Exception e) { logger.ParseError(e.Message, str); continue; } } else { txt = strVal.Value; } // write our string to the resources binary rw.AddResource(key, txt); } } } } // put the artifacts we created in the output properties. OutputCode = outCodeItems.ToArray(); OutputResources = outResItems.ToArray(); return(!hasError); }
public override void GenerateReport() { TeamSiteFile tf = new TeamSiteFile(); string fileName = System.Configuration.ConfigurationSettings.AppSettings["TeamSiteReports.TeamSiteOwnersReportLocation"]; string roleStyle; StreamWriter fwriter = File.CreateText( fileName ); Console.WriteLine("Creating file "+System.Configuration.ConfigurationSettings.AppSettings["TeamSiteReports.TeamSiteOwnersReportLocation"]); HtmlTextWriter txtWriter=new HtmlTextWriter(fwriter); HtmlTable reportHtmlTable = new HtmlTable(); reportHtmlTable.BgColor = System.Drawing.ColorTranslator.ToHtml(System.Drawing.Color.White); reportHtmlTable.Border = 1; reportHtmlTable.BorderColor = System.Drawing.ColorTranslator.ToHtml(System.Drawing.Color.LightGray ); reportHtmlTable.Style.Add("font-family", "Verdana"); reportHtmlTable.Style.Add("font-size", "9pt"); HtmlTableRow trMessage = new HtmlTableRow(); HtmlTableCell tcMessage = new HtmlTableCell(); tcMessage.ColSpan = 10; tcMessage.InnerText = @"Last run: " + System.DateTime.Now.ToString(); tcMessage.Style.Add("font-style","italic"); HtmlTableRow trHeader = new HtmlTableRow(); trHeader.Style.Add("font-weight","bold"); //teamsite name HtmlTableCell tcHeader1 = new HtmlTableCell(); tcHeader1.InnerText = "teamsite name"; trHeader.Cells.Add(tcHeader1); //teamsite url HtmlTableCell tcHeader2 = new HtmlTableCell(); tcHeader2.InnerText = "teamsite url"; trHeader.Cells.Add(tcHeader2); //teamsite brand HtmlTableCell tcHeader3 = new HtmlTableCell(); tcHeader3.InnerText = "brand"; trHeader.Cells.Add(tcHeader3); //teamsite users fullname HtmlTableCell tcHeader4 = new HtmlTableCell(); tcHeader4.InnerText = "teamsite owners"; trHeader.Cells.Add(tcHeader4); //lanId HtmlTableCell tcHeader5 = new HtmlTableCell(); tcHeader5.InnerText = "lanId" ; trHeader.Cells.Add(tcHeader5); //email address HtmlTableCell tcHeader6 = new HtmlTableCell(); tcHeader6.InnerText = "email" ; trHeader.Cells.Add(tcHeader6); //teamsite request for access email address HtmlTableCell tcHeader8 = new HtmlTableCell(); tcHeader8.InnerText = "request for access email"; trHeader.Cells.Add(tcHeader8); //teamsite memebership count HtmlTableCell tcHeader9 = new HtmlTableCell(); tcHeader9.InnerText = "TeamSite Membership"; trHeader.Cells.Add(tcHeader9); //subsites HtmlTableCell tcHeader10 = new HtmlTableCell(); tcHeader10.InnerText = "Subsites"; trHeader.Cells.Add(tcHeader10); reportHtmlTable.Rows.Add(trHeader); Console.WriteLine("Connecting to site..."); SPSite siteCollection = new SPSite(System.Configuration.ConfigurationSettings.AppSettings["TeamSiteReports.TeamSiteUrl"]); SPWebCollection sites = siteCollection.AllWebs; try { foreach (SPWeb site in sites) { try { SPWebCollection subSites = site.Webs; int subsitesCount = subSites.Count; int roleCount = 0; SPUserCollection users = site.Users; Console.WriteLine("Site: "+site.Name); foreach(SPUser user in users) { SPRoleCollection roles = user.Roles; //we need to count the roles here we count the number of teamsite owners.. foreach(SPRole role in roles) { if (role.Name == System.Configuration.ConfigurationSettings.AppSettings["TeamSiteReports.roleExclusiveInclude"].ToString()) { roleCount ++; } } } //user if (roleCount > Convert.ToInt16(System.Configuration.ConfigurationSettings.AppSettings["TeamSiteReports.TeamSiteOwnersCount"]) ) { //set the style to flag this on the cell roleStyle = System.Drawing.ColorTranslator.ToHtml(System.Drawing.Color.Orange); } else { roleStyle = System.Drawing.ColorTranslator.ToHtml(System.Drawing.Color.White); } foreach(SPUser user in users) { SPRoleCollection roles = user.Roles; Console.WriteLine("\tUser: "******"TeamSiteReports.roleExclusiveInclude"].ToString()) { string sRole = role.Name.ToString(); SPListCollection lists = site.Lists; HtmlTableRow trData = new HtmlTableRow(); //teamsite name HtmlTableCell tcData1 = new HtmlTableCell(); tcData1.InnerText = site.Name; trData.Cells.Add(tcData1); //teamsite url HtmlTableCell tcData2 = new HtmlTableCell(); HtmlAnchor ha1 = new HtmlAnchor(); ha1.InnerText=site.Url; ha1.HRef=site.Url; tcData2.Controls.Add(ha1); trData.Cells.Add(tcData2); //teamsite brand HtmlTableCell tcData3 = new HtmlTableCell(); string brand = site.Url.ToString(); try { string[] ary = brand.Split('/'); tcData3.InnerText = ary[3].ToString(); // e.g. http://ts/one fourth index will contain the brand } catch //the url may not contain the brand for instance the top level site { tcData3 .InnerText = "na"; } trData.Cells.Add(tcData3); //teamsite users fullname HtmlTableCell tcData4 = new HtmlTableCell(); tcData4.InnerText = user.Name; tcData4.BgColor = roleStyle; trData.Cells.Add(tcData4); //teamsite user lanId HtmlTableCell tcData5 = new HtmlTableCell(); tcData5.InnerText = user.LoginName; tcData5.BgColor = roleStyle; trData.Cells.Add(tcData5); //teamsite user email address HtmlTableCell tcData6 = new HtmlTableCell(); HtmlAnchor haEmail = new HtmlAnchor(); haEmail.InnerText="mailto:"+user.Email; haEmail.HRef=user.Email; tcData6.Controls.Add(haEmail); tcData6.InnerText = user.Email ; //email trData.Cells.Add(tcData6); //teamsite request for access email address HtmlTableCell tcData8 = new HtmlTableCell(); try { SPPermissionCollection permsSite = site.Permissions; if (permsSite.RequestAccess) { tcData8.InnerText = permsSite.RequestAccessEmail.ToString(); } else { tcData8.InnerText = ""; } } catch // { tcData8.BgColor = "#FF0000"; tcData8.InnerText = "permissions error"; } trData.Cells.Add(tcData8); //teamsite memebrship count HtmlTableCell tcData9 = new HtmlTableCell(); tcData9.InnerText = site.Users.Count.ToString(); trData.Cells.Add(tcData9); //subsites HtmlTableCell tcData10 = new HtmlTableCell(); tcData10.InnerText = subsitesCount.ToString(); if (subsitesCount>0) tcData10.BgColor = System.Drawing.ColorTranslator.ToHtml (System.Drawing.Color.Red); trData.Cells.Add(tcData10); reportHtmlTable.Rows.Add(trData); } } site.Dispose(); } } catch(Exception ex) { FileErrorLogger _logger = new FileErrorLogger(); _logger.LogError(ex.Message, ErrorLogSeverity.SeverityError, ErrorType.TypeApplication, "Centrica.Intranet.TeamSiteReports.UploadFile()"); _logger = null; } finally { site.Dispose(); } } } catch (Exception ex) { FileErrorLogger _logger = new FileErrorLogger(); _logger.LogError(ex.Message, ErrorLogSeverity.SeverityError, ErrorType.TypeApplication, "Centrica.Intranet.TeamSiteReports.UploadFile()"); _logger = null; } finally { siteCollection.Dispose(); } reportHtmlTable.RenderControl(txtWriter); txtWriter.Close(); tf.UploadFile(System.Configuration.ConfigurationSettings.AppSettings["TeamSiteReports.TeamSiteOwnersReportLocation"], System.Configuration.ConfigurationSettings.AppSettings["TeamSiteReports.TeamSiteOwnersReportDestination"]); Console.WriteLine("Completed"); }
public override void GenerateReport() { TeamSiteFile tf = new TeamSiteFile(); string fileName = System.Configuration.ConfigurationSettings.AppSettings["TeamSiteReports.TeamSiteSizeReportLocation"]; StreamWriter fwriter = File.CreateText( fileName ); Console.WriteLine("Creating file "+System.Configuration.ConfigurationSettings.AppSettings["TeamSiteReports.TeamSiteSizeReportLocation"]); HtmlTextWriter txtWriter=new HtmlTextWriter(fwriter); HtmlTable reportHtmlTable = new HtmlTable(); reportHtmlTable.BgColor = System.Drawing.ColorTranslator.ToHtml(System.Drawing.Color.White); reportHtmlTable.Border = 1; reportHtmlTable.BorderColor = System.Drawing.ColorTranslator.ToHtml(System.Drawing.Color.LightGray ); reportHtmlTable.Style.Add("font-family", "Verdana"); reportHtmlTable.Style.Add("font-size", "9pt"); HtmlTableRow trMessage = new HtmlTableRow(); HtmlTableCell tcMessage = new HtmlTableCell(); tcMessage.ColSpan = 10; tcMessage.InnerText = @"Last run: " + System.DateTime.Now.ToString(); tcMessage.Style.Add("font-style","italic"); trMessage.Cells.Add(tcMessage); reportHtmlTable.Rows.Add(trMessage); HtmlTableRow trHeader = new HtmlTableRow(); trHeader.Style.Add("font-weight","bold"); //teamsite name HtmlTableCell tcHeader1 = new HtmlTableCell(); tcHeader1.InnerText = "teamsite name"; trHeader.Cells.Add(tcHeader1); //teamsite url HtmlTableCell tcHeader2 = new HtmlTableCell(); tcHeader2.InnerText = "teamsite url"; trHeader.Cells.Add(tcHeader2); //teamsite # docs HtmlTableCell tcHeader3 = new HtmlTableCell(); tcHeader3.InnerText = "#docs"; trHeader.Cells.Add(tcHeader3); //teamsite size Mbytes HtmlTableCell tcHeader4 = new HtmlTableCell(); tcHeader4.InnerText = "filesize (MB)"; trHeader.Cells.Add(tcHeader4); reportHtmlTable.Rows.Add(trHeader); Console.WriteLine("Connecting to site..."); SPSite siteCollection = new SPSite(System.Configuration.ConfigurationSettings.AppSettings["TeamSiteReports.TeamSiteUrl"]); SPWebCollection sites = siteCollection.AllWebs; try { foreach (SPWeb site in sites) { try { totalFileSize = 0; fileCount = 0; SPFolderCollection folders = site.Folders; traverseFolders(folders); Console.WriteLine( "Summary: " + SPEncode.HtmlEncode(site.Name) + " Number: " + fileCount + " Size: " + totalFileSize); HtmlTableRow trData = new HtmlTableRow(); //teamsite name HtmlTableCell tcData1 = new HtmlTableCell(); tcData1.InnerText = site.Name; trData.Cells.Add(tcData1); //teamsite url HtmlTableCell tcData2 = new HtmlTableCell(); HtmlAnchor ha1 = new HtmlAnchor(); ha1.InnerText=site.Url; ha1.HRef=site.Url; tcData2.Controls.Add(ha1); trData.Cells.Add(tcData2); //teamsite # docs HtmlTableCell tcData3 = new HtmlTableCell(); tcData3 .InnerText = fileCount.ToString(); trData.Cells.Add(tcData3); //teamsite size Mbytes HtmlTableCell tcData4 = new HtmlTableCell(); totalFileSize = totalFileSize / 1000000; tcData4.InnerText = totalFileSize.ToString(); //tcData4.BgColor = roleStyle; trData.Cells.Add(tcData4); reportHtmlTable.Rows.Add(trData); } catch(Exception ex) { FileErrorLogger _logger = new FileErrorLogger(); _logger.LogError(ex.Message, ErrorLogSeverity.SeverityError, ErrorType.TypeApplication, "Intranet.TeamSiteReports.UploadFile()"); _logger = null; } finally { site.Dispose(); } } } catch (Exception ex) { FileErrorLogger _logger = new FileErrorLogger(); _logger.LogError(ex.Message, ErrorLogSeverity.SeverityError, ErrorType.TypeApplication, "Intranet.TeamSiteReports.UploadFile()"); _logger = null; } finally { siteCollection.Dispose(); } reportHtmlTable.RenderControl(txtWriter); txtWriter.Close(); tf.UploadFile(System.Configuration.ConfigurationSettings.AppSettings["TeamSiteReports.TeamSiteSizeReportLocation"], System.Configuration.ConfigurationSettings.AppSettings["TeamSiteReports.TeamSiteSizeReportDestination"]); }
public override void GenerateReport() { TeamSiteFile tf = new TeamSiteFile(); string fileName = System.Configuration.ConfigurationSettings.AppSettings["TeamSiteReports.TeamSiteSubsiteReportLocation"]; StreamWriter fwriter = File.CreateText( fileName ); Console.WriteLine("Creating file "+System.Configuration.ConfigurationSettings.AppSettings["TeamSiteReports.TeamSiteSubsiteReportLocation"]); HtmlTextWriter txtWriter=new HtmlTextWriter(fwriter); HtmlTable reportHtmlTable = new HtmlTable(); reportHtmlTable.BgColor = System.Drawing.ColorTranslator.ToHtml(System.Drawing.Color.White); reportHtmlTable.Border = 1; reportHtmlTable.BorderColor = System.Drawing.ColorTranslator.ToHtml(System.Drawing.Color.LightGray ); reportHtmlTable.Style.Add("font-family", "Verdana"); reportHtmlTable.Style.Add("font-size", "9pt"); HtmlTableRow trMessage = new HtmlTableRow(); HtmlTableCell tcMessage = new HtmlTableCell(); tcMessage.ColSpan = 10; tcMessage.InnerText = @"Last run: " + System.DateTime.Now.ToString(); tcMessage.Style.Add("font-style","italic"); trMessage.Cells.Add(tcMessage); reportHtmlTable.Rows.Add(trMessage); HtmlTableRow trHeader = new HtmlTableRow(); trHeader.Style.Add("font-weight","bold"); //teamsite name HtmlTableCell tcHeader1 = new HtmlTableCell(); tcHeader1.InnerText = "teamsite name"; trHeader.Cells.Add(tcHeader1); //teamsite url HtmlTableCell tcHeader2 = new HtmlTableCell(); tcHeader2.InnerText = "teamsite url"; trHeader.Cells.Add(tcHeader2); //teamsite brand HtmlTableCell tcHeader3 = new HtmlTableCell(); tcHeader3.InnerText = "brand"; trHeader.Cells.Add(tcHeader3); //teamsite subsite name HtmlTableCell tcHeader4 = new HtmlTableCell(); tcHeader4.InnerText = "subsite name"; trHeader.Cells.Add(tcHeader4); //teamsite subsite url HtmlTableCell tcHeader5 = new HtmlTableCell(); tcHeader5.InnerText = "subsite url"; trHeader.Cells.Add(tcHeader5); reportHtmlTable.Rows.Add(trHeader); SPSite siteCollection = new SPSite(System.Configuration.ConfigurationSettings.AppSettings["TeamSiteReports.TeamSiteUrl"]); SPWebCollection sites = siteCollection.AllWebs; try { foreach (SPWeb site in sites) { try { //ignore top level brand sites switch (site.Name) { case "": break; case "doh": break; case "Re": break; case "Mi": break; default: SPWebCollection subsites = site.Webs; //if there are subsites log them if(subsites.Count > 0) { foreach (SPWeb subsite in subsites) { try { Console.WriteLine("Site:"+site.Name); Console.WriteLine("\tSubsite:"+subsite.Name); HtmlTableRow trData = new HtmlTableRow(); //teamsite name HtmlTableCell tcData1 = new HtmlTableCell(); tcData1.InnerText = site.Name; trData.Cells.Add(tcData1); //teamsite url HtmlTableCell tcData2 = new HtmlTableCell(); HtmlAnchor ha1 = new HtmlAnchor(); ha1.InnerText=site.Url; ha1.HRef=site.Url; tcData2.Controls.Add(ha1); trData.Cells.Add(tcData2); //teamsite brand HtmlTableCell tcData3 = new HtmlTableCell(); string brand = site.Url.ToString(); try { string[] ary = brand.Split('/'); tcData3.InnerText = ary[3].ToString(); // e.g. http:///blahblah fourth index will contain the brand } catch //the url may not contain the brand for instance the top level site { tcData3 .InnerText = "na"; } trData.Cells.Add(tcData3); //subsite name HtmlTableCell tcData4 = new HtmlTableCell(); tcData4.InnerText = subsite.Name; trData.Cells.Add(tcData4); //subsite url HtmlTableCell tcData5 = new HtmlTableCell(); HtmlAnchor ha2 = new HtmlAnchor(); ha2.InnerText=subsite.Url; ha2.HRef=subsite.Url; tcData5.Controls.Add(ha2); trData.Cells.Add(tcData5); reportHtmlTable.Rows.Add(trData); } catch(Exception ex) { FileErrorLogger _logger = new FileErrorLogger(); _logger.LogError(ex.Message, ErrorLogSeverity.SeverityError, ErrorType.TypeApplication, "TeamSiteReports.UploadFile()"); _logger = null; } finally { subsite.Dispose(); } } } break; }//switch }//try catch(Exception ex) { FileErrorLogger _logger = new FileErrorLogger(); _logger.LogError(ex.Message, ErrorLogSeverity.SeverityError, ErrorType.TypeApplication, "TeamSiteReports.UploadFile()"); _logger = null; } finally { site.Dispose(); } }//foreach }//try catch(Exception ex) { FileErrorLogger _logger = new FileErrorLogger(); _logger.LogError(ex.Message, ErrorLogSeverity.SeverityError, ErrorType.TypeApplication, "TeamSiteReports.UploadFile()"); _logger = null; } finally { siteCollection.Dispose(); } reportHtmlTable.RenderControl(txtWriter); txtWriter.Close(); tf.UploadFile(System.Configuration.ConfigurationSettings.AppSettings["TeamSiteReports.TeamSiteSubsiteReportLocation"], System.Configuration.ConfigurationSettings.AppSettings["TeamSiteReports.TeamSiteSubsiteReportDestination"]); }