From 9c20dad093e5fb2cd670f03ebb1f77095c856ef8 Mon Sep 17 00:00:00 2001 From: sameerkhan001 Date: Tue, 2 Jun 2026 14:10:48 +0530 Subject: [PATCH 1/2] 1030624: Added Getting Started web API project. --- .../Web-API-Project/Web-API-Project.slnx | 3 + .../Controllers/WeatherForecastController.cs | 112 ++++++++++++++++++ .../Web-API-Project/Program.cs | 24 ++++ .../Properties/launchSettings.json | 41 +++++++ .../Web-API-Project/WeatherForecast.cs | 13 ++ .../Web-API-Project/Web-API-Project.csproj | 15 +++ .../Web-API-Project.csproj.user | 6 + .../Web-API-Project/Web-API-Project.http | 6 + .../appsettings.Development.json | 8 ++ .../Web-API-Project/appsettings.json | 9 ++ 10 files changed, 237 insertions(+) create mode 100644 Getting Started/Web-API/Web-API-Project/Web-API-Project.slnx create mode 100644 Getting Started/Web-API/Web-API-Project/Web-API-Project/Controllers/WeatherForecastController.cs create mode 100644 Getting Started/Web-API/Web-API-Project/Web-API-Project/Program.cs create mode 100644 Getting Started/Web-API/Web-API-Project/Web-API-Project/Properties/launchSettings.json create mode 100644 Getting Started/Web-API/Web-API-Project/Web-API-Project/WeatherForecast.cs create mode 100644 Getting Started/Web-API/Web-API-Project/Web-API-Project/Web-API-Project.csproj create mode 100644 Getting Started/Web-API/Web-API-Project/Web-API-Project/Web-API-Project.csproj.user create mode 100644 Getting Started/Web-API/Web-API-Project/Web-API-Project/Web-API-Project.http create mode 100644 Getting Started/Web-API/Web-API-Project/Web-API-Project/appsettings.Development.json create mode 100644 Getting Started/Web-API/Web-API-Project/Web-API-Project/appsettings.json diff --git a/Getting Started/Web-API/Web-API-Project/Web-API-Project.slnx b/Getting Started/Web-API/Web-API-Project/Web-API-Project.slnx new file mode 100644 index 00000000..17d6ab97 --- /dev/null +++ b/Getting Started/Web-API/Web-API-Project/Web-API-Project.slnx @@ -0,0 +1,3 @@ + + + diff --git a/Getting Started/Web-API/Web-API-Project/Web-API-Project/Controllers/WeatherForecastController.cs b/Getting Started/Web-API/Web-API-Project/Web-API-Project/Controllers/WeatherForecastController.cs new file mode 100644 index 00000000..101998bd --- /dev/null +++ b/Getting Started/Web-API/Web-API-Project/Web-API-Project/Controllers/WeatherForecastController.cs @@ -0,0 +1,112 @@ +using Microsoft.AspNetCore.Mvc; +using Syncfusion.Drawing; +using Syncfusion.Pdf; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Grid; + +namespace Web_API_Project.Controllers +{ + [ApiController] + [Route("[controller]")] + public class WeatherForecastController : ControllerBase + { + private static readonly string[] Summaries = new[] + { + "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" + }; + + private readonly ILogger _logger; + + public WeatherForecastController(ILogger logger) + { + _logger = logger; + } + + [HttpGet(Name = "GetWeatherForecast")] + public IEnumerable Get() + { + return Enumerable.Range(1, 5).Select(index => new WeatherForecast + { + Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)), + TemperatureC = Random.Shared.Next(-20, 55), + Summary = Summaries[Random.Shared.Next(Summaries.Length)] + }) + .ToArray(); + } + + [HttpGet("/api/Pdf")] + public IActionResult CreatePdfDocument() + { + try + { + const string fileDownloadName = "Output.pdf"; + const string contentType = "application/pdf"; + var stream = ExportWeatherForecastToPdf(); + stream.Position = 0; + return File(stream, contentType, fileDownloadName); + } + catch (Exception ex) + { + return BadRequest($"Error occurred while creating PDF file: {ex.Message}"); + } + } + + private MemoryStream ExportWeatherForecastToPdf() + { + var forecasts = Get().ToList(); + + //Create a new PDF document. + using (PdfDocument pdfDocument = new PdfDocument()) + { + int paragraphAfterSpacing = 8; + int cellMargin = 8; + + //Add page to the PDF document. + PdfPage page = pdfDocument.Pages.Add(); + + //Create a new font. + PdfStandardFont font = new PdfStandardFont(PdfFontFamily.TimesRoman, 16); + + //Create a text element to draw a text in PDF page. + PdfTextElement title = new PdfTextElement("Weather Forecast", font, PdfBrushes.Black); + PdfLayoutResult result = title.Draw(page, new PointF(0, 0)); + + PdfStandardFont contentFont = new PdfStandardFont(PdfFontFamily.TimesRoman, 12); + PdfTextElement content = new PdfTextElement("This component demonstrates fetching data from a service and exporting the data to a PDF document using Syncfusion .NET PDF library.", contentFont, PdfBrushes.Black); + PdfLayoutFormat format = new PdfLayoutFormat + { + Layout = PdfLayoutType.Paginate + }; + + //Draw a text to the PDF document. + result = content.Draw(page, new RectangleF(0, result.Bounds.Bottom + paragraphAfterSpacing, page.GetClientSize().Width, page.GetClientSize().Height), format); + + //Create a PdfGrid. + PdfGrid pdfGrid = new PdfGrid(); + pdfGrid.Style.CellPadding.Left = cellMargin; + pdfGrid.Style.CellPadding.Right = cellMargin; + + //Applying built-in style to the PDF grid. + pdfGrid.ApplyBuiltinStyle(PdfGridBuiltinStyle.GridTable4Accent1); + + //Assign data source. + pdfGrid.DataSource = forecasts; + pdfGrid.Style.Font = contentFont; + + //Draw PDF grid into the PDF page. + pdfGrid.Draw(page, new PointF(0, result.Bounds.Bottom + paragraphAfterSpacing)); + + using (MemoryStream stream = new MemoryStream()) + { + //Saving the PDF document into the stream. + pdfDocument.Save(stream); + + //Closing the PDF document. + pdfDocument.Close(true); + + return new MemoryStream(stream.ToArray()); + } + } + } + } +} diff --git a/Getting Started/Web-API/Web-API-Project/Web-API-Project/Program.cs b/Getting Started/Web-API/Web-API-Project/Web-API-Project/Program.cs new file mode 100644 index 00000000..4407d70d --- /dev/null +++ b/Getting Started/Web-API/Web-API-Project/Web-API-Project/Program.cs @@ -0,0 +1,24 @@ +var builder = WebApplication.CreateBuilder(args); +// Add services to the container. + +builder.Services.AddControllers(); +// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle +builder.Services.AddEndpointsApiExplorer(); +builder.Services.AddSwaggerGen(); + +var app = builder.Build(); + +// Configure the HTTP request pipeline. +if (app.Environment.IsDevelopment()) +{ + app.UseSwagger(); + app.UseSwaggerUI(); +} + +app.UseHttpsRedirection(); + +app.UseAuthorization(); + +app.MapControllers(); + +app.Run(); diff --git a/Getting Started/Web-API/Web-API-Project/Web-API-Project/Properties/launchSettings.json b/Getting Started/Web-API/Web-API-Project/Web-API-Project/Properties/launchSettings.json new file mode 100644 index 00000000..522ffd74 --- /dev/null +++ b/Getting Started/Web-API/Web-API-Project/Web-API-Project/Properties/launchSettings.json @@ -0,0 +1,41 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:9493", + "sslPort": 44373 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "http://localhost:5288", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "https://localhost:7289;http://localhost:5288", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "launchUrl": "swagger", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/Getting Started/Web-API/Web-API-Project/Web-API-Project/WeatherForecast.cs b/Getting Started/Web-API/Web-API-Project/Web-API-Project/WeatherForecast.cs new file mode 100644 index 00000000..4ce18841 --- /dev/null +++ b/Getting Started/Web-API/Web-API-Project/Web-API-Project/WeatherForecast.cs @@ -0,0 +1,13 @@ +namespace Web_API_Project +{ + public class WeatherForecast + { + public DateOnly Date { get; set; } + + public int TemperatureC { get; set; } + + public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); + + public string? Summary { get; set; } + } +} diff --git a/Getting Started/Web-API/Web-API-Project/Web-API-Project/Web-API-Project.csproj b/Getting Started/Web-API/Web-API-Project/Web-API-Project/Web-API-Project.csproj new file mode 100644 index 00000000..802bc8bc --- /dev/null +++ b/Getting Started/Web-API/Web-API-Project/Web-API-Project/Web-API-Project.csproj @@ -0,0 +1,15 @@ + + + + net8.0 + enable + enable + Web_API_Project + + + + + + + + diff --git a/Getting Started/Web-API/Web-API-Project/Web-API-Project/Web-API-Project.csproj.user b/Getting Started/Web-API/Web-API-Project/Web-API-Project/Web-API-Project.csproj.user new file mode 100644 index 00000000..9ff5820a --- /dev/null +++ b/Getting Started/Web-API/Web-API-Project/Web-API-Project/Web-API-Project.csproj.user @@ -0,0 +1,6 @@ + + + + https + + \ No newline at end of file diff --git a/Getting Started/Web-API/Web-API-Project/Web-API-Project/Web-API-Project.http b/Getting Started/Web-API/Web-API-Project/Web-API-Project/Web-API-Project.http new file mode 100644 index 00000000..d2935c77 --- /dev/null +++ b/Getting Started/Web-API/Web-API-Project/Web-API-Project/Web-API-Project.http @@ -0,0 +1,6 @@ +@Web_API_Project_HostAddress = http://localhost:5288 + +GET {{Web_API_Project_HostAddress}}/weatherforecast/ +Accept: application/json + +### diff --git a/Getting Started/Web-API/Web-API-Project/Web-API-Project/appsettings.Development.json b/Getting Started/Web-API/Web-API-Project/Web-API-Project/appsettings.Development.json new file mode 100644 index 00000000..0c208ae9 --- /dev/null +++ b/Getting Started/Web-API/Web-API-Project/Web-API-Project/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/Getting Started/Web-API/Web-API-Project/Web-API-Project/appsettings.json b/Getting Started/Web-API/Web-API-Project/Web-API-Project/appsettings.json new file mode 100644 index 00000000..10f68b8c --- /dev/null +++ b/Getting Started/Web-API/Web-API-Project/Web-API-Project/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} From a7a25802748ba6ff930b15fc5111728f67aa62a6 Mon Sep 17 00:00:00 2001 From: sameerkhan001 Date: Tue, 2 Jun 2026 15:13:49 +0530 Subject: [PATCH 2/2] 1030624: Removed unwanted changes --- .../Controllers/WeatherForecastController.cs | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/Getting Started/Web-API/Web-API-Project/Web-API-Project/Controllers/WeatherForecastController.cs b/Getting Started/Web-API/Web-API-Project/Web-API-Project/Controllers/WeatherForecastController.cs index 101998bd..587ec968 100644 --- a/Getting Started/Web-API/Web-API-Project/Web-API-Project/Controllers/WeatherForecastController.cs +++ b/Getting Started/Web-API/Web-API-Project/Web-API-Project/Controllers/WeatherForecastController.cs @@ -60,39 +60,30 @@ private MemoryStream ExportWeatherForecastToPdf() { int paragraphAfterSpacing = 8; int cellMargin = 8; - //Add page to the PDF document. PdfPage page = pdfDocument.Pages.Add(); - //Create a new font. PdfStandardFont font = new PdfStandardFont(PdfFontFamily.TimesRoman, 16); - //Create a text element to draw a text in PDF page. PdfTextElement title = new PdfTextElement("Weather Forecast", font, PdfBrushes.Black); PdfLayoutResult result = title.Draw(page, new PointF(0, 0)); - PdfStandardFont contentFont = new PdfStandardFont(PdfFontFamily.TimesRoman, 12); PdfTextElement content = new PdfTextElement("This component demonstrates fetching data from a service and exporting the data to a PDF document using Syncfusion .NET PDF library.", contentFont, PdfBrushes.Black); PdfLayoutFormat format = new PdfLayoutFormat { Layout = PdfLayoutType.Paginate }; - //Draw a text to the PDF document. result = content.Draw(page, new RectangleF(0, result.Bounds.Bottom + paragraphAfterSpacing, page.GetClientSize().Width, page.GetClientSize().Height), format); - //Create a PdfGrid. PdfGrid pdfGrid = new PdfGrid(); pdfGrid.Style.CellPadding.Left = cellMargin; pdfGrid.Style.CellPadding.Right = cellMargin; - //Applying built-in style to the PDF grid. pdfGrid.ApplyBuiltinStyle(PdfGridBuiltinStyle.GridTable4Accent1); - //Assign data source. pdfGrid.DataSource = forecasts; pdfGrid.Style.Font = contentFont; - //Draw PDF grid into the PDF page. pdfGrid.Draw(page, new PointF(0, result.Bounds.Bottom + paragraphAfterSpacing)); @@ -100,10 +91,6 @@ private MemoryStream ExportWeatherForecastToPdf() { //Saving the PDF document into the stream. pdfDocument.Save(stream); - - //Closing the PDF document. - pdfDocument.Close(true); - return new MemoryStream(stream.ToArray()); } }