| <PackageReference Include="AutoMapper" Version="10.1.1" /> | <PackageReference Include="AutoMapper" Version="10.1.1" /> | ||||
| <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="8.1.1" /> | <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="8.1.1" /> | ||||
| <PackageReference Include="iTextSharp" Version="5.5.13.2" /> | <PackageReference Include="iTextSharp" Version="5.5.13.2" /> | ||||
| <PackageReference Include="MediatR" Version="9.0.0" /> | |||||
| <PackageReference Include="MediatR.Extensions.Microsoft.DependencyInjection" Version="9.0.0" /> | |||||
| <PackageReference Include="PuppeteerSharp" Version="5.1.0" /> | <PackageReference Include="PuppeteerSharp" Version="5.1.0" /> | ||||
| <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" /> | <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" /> | ||||
| </ItemGroup> | </ItemGroup> |
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | |||||
| <PropertyGroup> | |||||
| <Controller_SelectedScaffolderID>MvcControllerEmptyScaffolder</Controller_SelectedScaffolderID> | |||||
| <Controller_SelectedScaffolderCategoryPath>root/Common/MVC/Controller</Controller_SelectedScaffolderCategoryPath> | |||||
| </PropertyGroup> | |||||
| </Project> |
| using BlackRock.Reporting.API.Mediator; | |||||
| using BlackRock.Reporting.API.Models; | |||||
| using MediatR; | |||||
| using Microsoft.AspNetCore.Authorization; | |||||
| using Microsoft.AspNetCore.Mvc; | |||||
| using Microsoft.AspNetCore.Mvc.ModelBinding; | |||||
| namespace BlackRock.Reporting.API.Controllers | |||||
| { | |||||
| [Route("api/users")] | |||||
| public class UsersController : Controller | |||||
| { | |||||
| private readonly IMediator mediator; | |||||
| public UsersController(IMediator mediator) | |||||
| { | |||||
| this.mediator = mediator ?? throw new ArgumentNullException(nameof(mediator)); | |||||
| } | |||||
| // GET: api/users/1 | |||||
| [HttpGet] | |||||
| [Route("api/users/{id}")] | |||||
| public async Task<IActionResult> Get(Guid id) | |||||
| { | |||||
| var result = await mediator.Send(new GetUsersQuery(id)); | |||||
| if (!result.IsSuccess) | |||||
| return BadRequest(result.Error); | |||||
| if (result.Data == null) | |||||
| return NoContent(); | |||||
| return Ok(result.Data); | |||||
| } | |||||
| // GET: api/users?Page=2&PageSize=25 | |||||
| [HttpGet] | |||||
| [Route("api/users")] | |||||
| public async Task<IActionResult> GetAll(UserQuery filter) | |||||
| { | |||||
| var result = await mediator.Send(new GetAllUsersQuery(filter)); | |||||
| if (!result.IsSuccess) | |||||
| return BadRequest(result.Error); | |||||
| if (result.Data == null) | |||||
| return NoContent(); | |||||
| return Ok(result.Data); | |||||
| } | |||||
| // POST: api/users | |||||
| [HttpPost] | |||||
| [Route("api/users")] | |||||
| public async Task<IActionResult> Post([FromBody] UserForm form) | |||||
| { | |||||
| if (!ModelState.IsValid) | |||||
| return BadRequest(ModelState); | |||||
| var result = await mediator.Send(new CreateUsersCommand(form)); | |||||
| if (!result.IsSuccess) | |||||
| return BadRequest(result.Error); | |||||
| // return Created(Url.Action(nameof(Get), result.Data), result.Data); | |||||
| return Ok(result.Data); | |||||
| } | |||||
| // PUT: api/users/1 | |||||
| [HttpPut] | |||||
| [Route("api/users/{id}")] | |||||
| public async Task<IActionResult> Put(Guid id, [FromBody] UserForm form) | |||||
| { | |||||
| if (!ModelState.IsValid) | |||||
| return BadRequest(ErrorResponse.Validation(ModelState)); | |||||
| var result = await mediator.Send(new UpdateAllUsersCommand(id, form)); | |||||
| if (!result.IsSuccess) | |||||
| return BadRequest(result.Error); | |||||
| return Accepted(); | |||||
| } | |||||
| // PATCH: api/users/1/email | |||||
| [HttpPatch] | |||||
| [Route("api/users/{id}/email")] | |||||
| public async Task<IActionResult> UpdateEmail(Guid id, [FromBody] UserForm form) | |||||
| { | |||||
| if (!ModelState.IsValid) | |||||
| return BadRequest(ErrorResponse.Validation(ModelState)); | |||||
| var result = await mediator.Send(new UpdateEmailUsersCommand(id, form)); | |||||
| if (!result.IsSuccess) | |||||
| return BadRequest(result.Error); | |||||
| return Accepted(); | |||||
| } | |||||
| // DELETE: api/users/1 | |||||
| [HttpDelete] | |||||
| [Route("api/users/{id}")] | |||||
| public async Task<IActionResult> Delete(Guid id) | |||||
| { | |||||
| if (!ModelState.IsValid) | |||||
| return BadRequest(ErrorResponse.Validation(ModelState)); | |||||
| var result = await mediator.Send(new DeleteUsersCommand(id)); | |||||
| if (!result.IsSuccess) | |||||
| return BadRequest(result.Error); | |||||
| return NoContent(); | |||||
| } | |||||
| } | |||||
| public class ErrorResponse | |||||
| { | |||||
| public IEnumerable<string> Errors { get; set; } | |||||
| public Enum StatusCode { get; set; } | |||||
| public ModelStateDictionary Validations { get; set; } | |||||
| public static ErrorResponse Validation(ModelStateDictionary validations) | |||||
| { | |||||
| return new ErrorResponse | |||||
| { | |||||
| Validations = validations | |||||
| }; | |||||
| } | |||||
| } | |||||
| // I/O | |||||
| // Output: DTO : Entity wraper, Agregations | |||||
| // Input: Query / Form | |||||
| } |
| using AutoMapper; | |||||
| using BlackRock.Reporting.API.Models; | |||||
| using MediatR; | |||||
| namespace BlackRock.Reporting.API.Mediator | |||||
| { | |||||
| public class CreateUsersCommand : IRequest<Result<Guid>> | |||||
| { | |||||
| public UserForm User { get; } | |||||
| public CreateUsersCommand(UserForm user) | |||||
| { | |||||
| this.User = user; | |||||
| } | |||||
| } | |||||
| public class CreateUsersCommandHandlers : IRequestHandler<CreateUsersCommand, Result<Guid>> | |||||
| { | |||||
| private readonly ILogger<CreateUsersCommandHandlers> logger; | |||||
| private readonly IMapper mapper; | |||||
| public CreateUsersCommandHandlers(ILogger<CreateUsersCommandHandlers> logger, IMapper mapper) | |||||
| { | |||||
| this.mapper = mapper; | |||||
| this.logger = logger; | |||||
| } | |||||
| public async Task<Result<Guid>> Handle(CreateUsersCommand command, CancellationToken cancellationToken) | |||||
| { | |||||
| if (command.User == null) | |||||
| throw new ArgumentException($"Parameter {nameof(command.User)} must not be null"); | |||||
| try | |||||
| { | |||||
| logger.LogInformation("Creating new user ..."); | |||||
| var user = mapper.Map<UserForm, User>(command.User); | |||||
| user.Id = Guid.NewGuid(); | |||||
| // repository.Add(User); | |||||
| // await unitOfWork.SaveChangesAsync(); | |||||
| return new Result<Guid> { Data = user.Id }; | |||||
| } | |||||
| catch (Exception ex) | |||||
| { | |||||
| return new Result<Guid> { IsSuccess = false, Error = "Faild to add data to DB." }; | |||||
| } | |||||
| } | |||||
| } | |||||
| } |
| using AutoMapper; | |||||
| using BlackRock.Reporting.API.Models; | |||||
| using MediatR; | |||||
| namespace BlackRock.Reporting.API.Mediator | |||||
| { | |||||
| public class DeleteUsersCommand : IRequest<Result<Guid>> | |||||
| { | |||||
| public Guid Id { get; } | |||||
| public DeleteUsersCommand(Guid id) | |||||
| { | |||||
| this.Id = id; | |||||
| } | |||||
| } | |||||
| public class DeleteUsersCommandHandlers : IRequestHandler<DeleteUsersCommand, Result<Guid>> | |||||
| { | |||||
| private readonly ILogger<DeleteUsersCommandHandlers> logger; | |||||
| private readonly IMapper mapper; | |||||
| public DeleteUsersCommandHandlers(ILogger<DeleteUsersCommandHandlers> logger, IMapper mapper) | |||||
| { | |||||
| this.mapper = mapper; | |||||
| this.logger = logger; | |||||
| } | |||||
| public async Task<Result<Guid>> Handle(DeleteUsersCommand command, CancellationToken cancellationToken) | |||||
| { | |||||
| if (command.Id == Guid.Empty) | |||||
| throw new ArgumentException($"Parameter {nameof(command.Id)} must not be null or empty"); | |||||
| logger.LogInformation("Deleting user ..."); | |||||
| try | |||||
| { | |||||
| var user = new User(); | |||||
| // var user = repository.GetUserByIdAsync(id); | |||||
| // mapper.Map<UserForm, User>(command.User,user) | |||||
| // var user = mapper.Map<UserForm, User>(command.User); | |||||
| var id = user.Id; | |||||
| // await repository.RemoveAsync(user); | |||||
| // await unitOfWork.SaveChangesAsync(); | |||||
| return new Result<Guid> { Data = id }; | |||||
| } | |||||
| catch (Exception ex) | |||||
| { | |||||
| return new Result<Guid> { IsSuccess = false, Error = "Faild to delete data from DB." }; | |||||
| } | |||||
| } | |||||
| } | |||||
| } |
| using AutoMapper; | |||||
| using BlackRock.Reporting.API.Models; | |||||
| using MediatR; | |||||
| namespace BlackRock.Reporting.API.Mediator | |||||
| { | |||||
| public class QueryResults<T> | |||||
| { | |||||
| public int TotalItems { get; set; } | |||||
| public IEnumerable<T> Items { get; set; } | |||||
| } | |||||
| public class UserQuery | |||||
| { | |||||
| public string SortBy { get; set; } | |||||
| public bool IsSortAscending { get; set; } | |||||
| public int Page { get; set; } | |||||
| public int PageSize { get; set; } | |||||
| } | |||||
| public class GetAllUsersQuery : IRequest<Result<QueryResults<UserDto>>> | |||||
| { | |||||
| public UserQuery Filter { get; } | |||||
| public GetAllUsersQuery(UserQuery filter) | |||||
| { | |||||
| this.Filter = filter; | |||||
| } | |||||
| } | |||||
| public class GetAllUsersQueryHandlers : IRequestHandler<GetAllUsersQuery, Result<QueryResults<UserDto>>> | |||||
| { | |||||
| private readonly ILogger<GetAllUsersQueryHandlers> logger; | |||||
| private readonly IMapper mapper; | |||||
| public GetAllUsersQueryHandlers(ILogger<GetAllUsersQueryHandlers> logger, IMapper mapper) | |||||
| { | |||||
| this.mapper = mapper; | |||||
| this.logger = logger; | |||||
| } | |||||
| public async Task<Result<QueryResults<UserDto>>> Handle(GetAllUsersQuery command, CancellationToken cancellationToken) | |||||
| { | |||||
| if (command.Filter == null) | |||||
| throw new ArgumentNullException($"Parameter {nameof(command.Filter)} must not be null"); | |||||
| logger.LogInformation("Getting user ..."); | |||||
| try | |||||
| { | |||||
| var users = new List<User>(); | |||||
| users.Add(new (){Id = new Guid(), Name = "John", Email = "john.done@dilig.net"}); // Demonstration purpose | |||||
| // var users = await repository.GetAllUsersByFilterAsync(command.Filter); | |||||
| var usersDto = mapper.Map<IEnumerable<User>, IEnumerable<UserDto>>(users); | |||||
| var data = new QueryResults<UserDto> { Items = usersDto, TotalItems = users.Count }; | |||||
| return new Result<QueryResults<UserDto>> { Data = data }; | |||||
| } | |||||
| catch (Exception ex) | |||||
| { | |||||
| return new Result<QueryResults<UserDto>> { IsSuccess = false, Error = "Faild to fetch data from DB." }; | |||||
| } | |||||
| } | |||||
| } | |||||
| } |
| using AutoMapper; | |||||
| using BlackRock.Reporting.API.Models; | |||||
| using MediatR; | |||||
| namespace BlackRock.Reporting.API.Mediator | |||||
| { | |||||
| public class GetUsersQuery : IRequest<Result<UserDto>> | |||||
| { | |||||
| public Guid Id { get; } | |||||
| public GetUsersQuery(Guid id) | |||||
| { | |||||
| this.Id = id; | |||||
| } | |||||
| } | |||||
| public class GetUsersQueryHandlers : IRequestHandler<GetUsersQuery, Result<UserDto>> | |||||
| { | |||||
| private readonly ILogger<GetUsersQueryHandlers> logger; | |||||
| private readonly IMapper mapper; | |||||
| public GetUsersQueryHandlers(ILogger<GetUsersQueryHandlers> logger, IMapper mapper) | |||||
| { | |||||
| this.mapper = mapper; | |||||
| this.logger = logger; | |||||
| } | |||||
| public async Task<Result<UserDto>> Handle(GetUsersQuery command, CancellationToken cancellationToken) | |||||
| { | |||||
| if (command.Id == Guid.Empty) | |||||
| throw new ArgumentException($"Parameter {nameof(command.Id)} must not be null or empty"); | |||||
| logger.LogInformation("Getting user ..."); | |||||
| try | |||||
| { | |||||
| var user = new User(); | |||||
| // var user = repository.GetUserByIdAsync(id); | |||||
| var userDto = mapper.Map<User, UserDto>(user); | |||||
| return new Result<UserDto> { Data = userDto }; | |||||
| } | |||||
| catch (Exception ex) | |||||
| { | |||||
| return new Result<UserDto> { IsSuccess = false, Error = "Faild to fetch data from DB." }; | |||||
| } | |||||
| } | |||||
| } | |||||
| } |
| using AutoMapper; | |||||
| using BlackRock.Reporting.API.Models; | |||||
| using MediatR; | |||||
| namespace BlackRock.Reporting.API.Mediator | |||||
| { | |||||
| public class UpdateAllUsersCommand : IRequest<Result<UserDto>> | |||||
| { | |||||
| public UserForm User { get; } | |||||
| public Guid Id { get; } | |||||
| public UpdateAllUsersCommand(Guid id, UserForm user) | |||||
| { | |||||
| this.Id = id; | |||||
| this.User = user; | |||||
| } | |||||
| } | |||||
| public class UpdateAllUsersCommandHandlers : IRequestHandler<UpdateAllUsersCommand, Result<UserDto>> | |||||
| { | |||||
| private readonly ILogger<UpdateAllUsersCommandHandlers> logger; | |||||
| private readonly IMapper mapper; | |||||
| public UpdateAllUsersCommandHandlers(ILogger<UpdateAllUsersCommandHandlers> logger, IMapper mapper) | |||||
| { | |||||
| this.mapper = mapper; | |||||
| this.logger = logger; | |||||
| } | |||||
| public async Task<Result<UserDto>> Handle(UpdateAllUsersCommand command, CancellationToken cancellationToken) | |||||
| { | |||||
| if (command.Id == Guid.Empty) | |||||
| throw new ArgumentException($"Parameter {nameof(command.Id)} must not be null or empty"); | |||||
| logger.LogInformation("Updating user ..."); | |||||
| try | |||||
| { | |||||
| var user = new User(); | |||||
| // var user = repository.GetUserByIdAsync(id); | |||||
| // mapper.Map<UserForm, User>(command.User,user) | |||||
| // await unitOfWork.SaveChangesAsync(); | |||||
| var updatedUser = mapper.Map<User, UserDto>(user); | |||||
| return new Result<UserDto> { Data = updatedUser }; | |||||
| } | |||||
| catch (Exception ex) | |||||
| { | |||||
| return new Result<UserDto> { IsSuccess = false, Error = "Faild to update data in DB." }; | |||||
| } | |||||
| } | |||||
| } | |||||
| } |
| using AutoMapper; | |||||
| using BlackRock.Reporting.API.Models; | |||||
| using MediatR; | |||||
| namespace BlackRock.Reporting.API.Mediator | |||||
| { | |||||
| public class UpdateEmailUsersCommand : IRequest<Result<UserDto>> | |||||
| { | |||||
| public UserForm User { get; } | |||||
| public Guid Id { get; } | |||||
| public UpdateEmailUsersCommand(Guid id, UserForm user) | |||||
| { | |||||
| this.Id = id; | |||||
| this.User = user; | |||||
| } | |||||
| } | |||||
| public class UpdateEmailUsersCommandHandlers : IRequestHandler<UpdateEmailUsersCommand, Result<UserDto>> | |||||
| { | |||||
| private readonly ILogger<UpdateEmailUsersCommandHandlers> logger; | |||||
| private readonly IMapper mapper; | |||||
| public UpdateEmailUsersCommandHandlers(ILogger<UpdateEmailUsersCommandHandlers> logger, IMapper mapper) | |||||
| { | |||||
| this.mapper = mapper; | |||||
| this.logger = logger; | |||||
| } | |||||
| public async Task<Result<UserDto>> Handle(UpdateEmailUsersCommand command, CancellationToken cancellationToken) | |||||
| { | |||||
| if (command.Id == Guid.Empty) | |||||
| throw new ArgumentException($"Parameter {nameof(command.Id)} must not be null or empty"); | |||||
| logger.LogInformation("Updating user email ..."); | |||||
| try | |||||
| { | |||||
| var user = new User(); | |||||
| // var user = repository.GetUserByIdAsync(id); | |||||
| user.Email = command.User.Email; | |||||
| // await unitOfWork.SaveChangesAsync(); | |||||
| var updatedUser = mapper.Map<User, UserDto>(user); | |||||
| return new Result<UserDto> { Data = updatedUser }; | |||||
| } | |||||
| catch (Exception ex) | |||||
| { | |||||
| return new Result<UserDto> { IsSuccess = false, Error = "Faild to update data in DB." }; | |||||
| } | |||||
| } | |||||
| } | |||||
| } |
| namespace BlackRock.Reporting.API.Models | |||||
| { | |||||
| public class Result<TData> | |||||
| { | |||||
| public bool IsSuccess { get; set; } = true; | |||||
| public string Error { get; set; } | |||||
| public TData? Data { get; set; } | |||||
| } | |||||
| } |
| namespace BlackRock.Reporting.API.Models | |||||
| { | |||||
| public class User | |||||
| { | |||||
| public Guid Id { get; set; } | |||||
| public string? Name { get; set; } | |||||
| public string? Email { get; set; } | |||||
| } | |||||
| public class UserDto | |||||
| { | |||||
| public string? Name { get; set; } | |||||
| public string? Email { get; set; } | |||||
| } | |||||
| } |
| using System.ComponentModel.DataAnnotations; | |||||
| namespace BlackRock.Reporting.API.Models | |||||
| { | |||||
| public class UserForm | |||||
| { | |||||
| [Required] | |||||
| public string? Name { get; set; } | |||||
| [Required] | |||||
| public string? Email { get; set; } | |||||
| } | |||||
| } |
| namespace BlackRock.Reporting.API.Persistence | namespace BlackRock.Reporting.API.Persistence | ||||
| { | { | ||||
| public class PdfGenerator : IPdfGenerator | public class PdfGenerator : IPdfGenerator | ||||
| { | { | ||||
| private readonly IHostEnvironment host; | private readonly IHostEnvironment host; | ||||
| await EvaluateScript(page, "dist/main.js"); | await EvaluateScript(page, "dist/main.js"); | ||||
| await EvaluateScript(page, "dist/main2.js"); | await EvaluateScript(page, "dist/main2.js"); | ||||
| await page.PdfAsync(path, options); | await page.PdfAsync(path, options); | ||||
| } | } | ||||
| } | } | ||||
| private async Task EvaluateScript(Page page, string fileName) | private async Task EvaluateScript(Page page, string fileName) |
| using AutoMapper; | using AutoMapper; | ||||
| using PuppeteerSharp; | using PuppeteerSharp; | ||||
| using BlackRock.Reporting.API.Core.Models; | using BlackRock.Reporting.API.Core.Models; | ||||
| using BlackRock.Reporting.API.Models; | |||||
| namespace BlackRock.Reporting.API.Profiles | namespace BlackRock.Reporting.API.Profiles | ||||
| { | { | ||||
| public class Profiler : Profile | public class Profiler : Profile | ||||
| { | { | ||||
| public Profiler() | public Profiler() | ||||
| { | { | ||||
| CreateMap<OptionsForPdf, PdfOptions>().ConvertUsing<OptionsForPdfConverter>(); | CreateMap<OptionsForPdf, PdfOptions>().ConvertUsing<OptionsForPdfConverter>(); | ||||
| CreateMap<User, UserDto>().ReverseMap(); | |||||
| CreateMap<User, UserForm>().ReverseMap(); | |||||
| } | } | ||||
| } | } | ||||
| { | { | ||||
| public PdfOptions Convert(OptionsForPdf source, PdfOptions destination, ResolutionContext context) | public PdfOptions Convert(OptionsForPdf source, PdfOptions destination, ResolutionContext context) | ||||
| { | { | ||||
| if(source == null) return destination; | |||||
| if(destination == null) | |||||
| if (source == null) return destination; | |||||
| if (destination == null) | |||||
| destination = new PdfOptions(); | destination = new PdfOptions(); | ||||
| destination.DisplayHeaderFooter = source.DisplayHeaderFooter; | |||||
| destination.HeaderTemplate = source.HeaderTemplate; | |||||
| destination.Height = source.Height; | |||||
| destination.Landscape = source.Landscape; | |||||
| destination.OmitBackground = source.OmitBackground; | |||||
| destination.PageRanges = source.PageRanges; | |||||
| destination.PreferCSSPageSize = source.PreferCSSPageSize; | |||||
| destination.PrintBackground = source.PrintBackground; | |||||
| destination.Scale = source.Scale; | |||||
| destination.Width = source.Width; | |||||
| destination.DisplayHeaderFooter = source.DisplayHeaderFooter; | |||||
| destination.HeaderTemplate = source.HeaderTemplate; | |||||
| destination.Height = source.Height; | |||||
| destination.Landscape = source.Landscape; | |||||
| destination.OmitBackground = source.OmitBackground; | |||||
| destination.PageRanges = source.PageRanges; | |||||
| destination.PreferCSSPageSize = source.PreferCSSPageSize; | |||||
| destination.PrintBackground = source.PrintBackground; | |||||
| destination.Scale = source.Scale; | |||||
| destination.Width = source.Width; | |||||
| destination.MarginOptions = new PuppeteerSharp.Media.MarginOptions() | destination.MarginOptions = new PuppeteerSharp.Media.MarginOptions() | ||||
| { | { | ||||
| Bottom = source.MarginBottom, | Bottom = source.MarginBottom, |
| using BlackRock.Reporting.API.Core; | using BlackRock.Reporting.API.Core; | ||||
| using BlackRock.Reporting.API.Mediator; | |||||
| using BlackRock.Reporting.API.Persistence; | using BlackRock.Reporting.API.Persistence; | ||||
| using BlackRock.Reporting.API.Profiles; | using BlackRock.Reporting.API.Profiles; | ||||
| using MediatR; | |||||
| using System.Reflection; | |||||
| var builder = WebApplication.CreateBuilder(args); | var builder = WebApplication.CreateBuilder(args); | ||||
| // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle | // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle | ||||
| builder.Services.AddEndpointsApiExplorer(); | builder.Services.AddEndpointsApiExplorer(); | ||||
| builder.Services.AddSwaggerGen(); | builder.Services.AddSwaggerGen(); | ||||
| builder.Services.AddMediatR(typeof(Program)); | |||||
| var app = builder.Build(); | var app = builder.Build(); | ||||
| // Configure the HTTP request pipeline. | // Configure the HTTP request pipeline. |
| { | { | ||||
| "format": 1, | "format": 1, | ||||
| "restore": { | "restore": { | ||||
| "C:\\Users\\safet.purkovic\\Desktop\\PDFEngineAPI\\blackrock.reporting.api\\BlackRock.Reporting.API.csproj": {} | |||||
| "C:\\Users\\safet.purkovic\\Desktop\\PDFEngineAPI\\BlackRock.Reporting.API\\BlackRock.Reporting.API.csproj": {} | |||||
| }, | }, | ||||
| "projects": { | "projects": { | ||||
| "C:\\Users\\safet.purkovic\\Desktop\\PDFEngineAPI\\blackrock.reporting.api\\BlackRock.Reporting.API.csproj": { | |||||
| "C:\\Users\\safet.purkovic\\Desktop\\PDFEngineAPI\\BlackRock.Reporting.API\\BlackRock.Reporting.API.csproj": { | |||||
| "version": "1.0.0", | "version": "1.0.0", | ||||
| "restore": { | "restore": { | ||||
| "projectUniqueName": "C:\\Users\\safet.purkovic\\Desktop\\PDFEngineAPI\\blackrock.reporting.api\\BlackRock.Reporting.API.csproj", | |||||
| "projectUniqueName": "C:\\Users\\safet.purkovic\\Desktop\\PDFEngineAPI\\BlackRock.Reporting.API\\BlackRock.Reporting.API.csproj", | |||||
| "projectName": "BlackRock.Reporting.API", | "projectName": "BlackRock.Reporting.API", | ||||
| "projectPath": "C:\\Users\\safet.purkovic\\Desktop\\PDFEngineAPI\\blackrock.reporting.api\\BlackRock.Reporting.API.csproj", | |||||
| "projectPath": "C:\\Users\\safet.purkovic\\Desktop\\PDFEngineAPI\\BlackRock.Reporting.API\\BlackRock.Reporting.API.csproj", | |||||
| "packagesPath": "C:\\Users\\safet.purkovic\\.nuget\\packages\\", | "packagesPath": "C:\\Users\\safet.purkovic\\.nuget\\packages\\", | ||||
| "outputPath": "C:\\Users\\safet.purkovic\\Desktop\\PDFEngineAPI\\blackrock.reporting.api\\obj\\", | |||||
| "outputPath": "C:\\Users\\safet.purkovic\\Desktop\\PDFEngineAPI\\BlackRock.Reporting.API\\obj\\", | |||||
| "projectStyle": "PackageReference", | "projectStyle": "PackageReference", | ||||
| "configFilePaths": [ | "configFilePaths": [ | ||||
| "C:\\Users\\safet.purkovic\\AppData\\Roaming\\NuGet\\NuGet.Config", | "C:\\Users\\safet.purkovic\\AppData\\Roaming\\NuGet\\NuGet.Config", | ||||
| "target": "Package", | "target": "Package", | ||||
| "version": "[8.1.1, )" | "version": "[8.1.1, )" | ||||
| }, | }, | ||||
| "MediatR": { | |||||
| "target": "Package", | |||||
| "version": "[9.0.0, )" | |||||
| }, | |||||
| "MediatR.Extensions.Microsoft.DependencyInjection": { | |||||
| "target": "Package", | |||||
| "version": "[9.0.0, )" | |||||
| }, | |||||
| "PuppeteerSharp": { | "PuppeteerSharp": { | ||||
| "target": "Package", | "target": "Package", | ||||
| "version": "[5.1.0, )" | "version": "[5.1.0, )" |
| "lib/itextsharp.dll": {} | "lib/itextsharp.dll": {} | ||||
| } | } | ||||
| }, | }, | ||||
| "MediatR/9.0.0": { | |||||
| "type": "package", | |||||
| "compile": { | |||||
| "lib/netstandard2.1/MediatR.dll": {} | |||||
| }, | |||||
| "runtime": { | |||||
| "lib/netstandard2.1/MediatR.dll": {} | |||||
| } | |||||
| }, | |||||
| "MediatR.Extensions.Microsoft.DependencyInjection/9.0.0": { | |||||
| "type": "package", | |||||
| "dependencies": { | |||||
| "MediatR": "9.0.0", | |||||
| "Microsoft.Extensions.DependencyInjection.Abstractions": "2.0.0" | |||||
| }, | |||||
| "compile": { | |||||
| "lib/netstandard2.0/MediatR.Extensions.Microsoft.DependencyInjection.dll": {} | |||||
| }, | |||||
| "runtime": { | |||||
| "lib/netstandard2.0/MediatR.Extensions.Microsoft.DependencyInjection.dll": {} | |||||
| } | |||||
| }, | |||||
| "Microsoft.AspNetCore.WebUtilities/2.0.2": { | "Microsoft.AspNetCore.WebUtilities/2.0.2": { | ||||
| "type": "package", | "type": "package", | ||||
| "dependencies": { | "dependencies": { | ||||
| "notice.txt" | "notice.txt" | ||||
| ] | ] | ||||
| }, | }, | ||||
| "MediatR/9.0.0": { | |||||
| "sha512": "8b3UYNxegHVYcJMG2zH8wn+YqxLvXG+eMfj0cMCq/jTW72p6O3PCKMkrIv0mqyxdW7bA4gblsocw7n+/9Akg5g==", | |||||
| "type": "package", | |||||
| "path": "mediatr/9.0.0", | |||||
| "files": [ | |||||
| ".nupkg.metadata", | |||||
| ".signature.p7s", | |||||
| "gradient_128x128.png", | |||||
| "lib/net461/MediatR.dll", | |||||
| "lib/net461/MediatR.xml", | |||||
| "lib/netstandard2.0/MediatR.dll", | |||||
| "lib/netstandard2.0/MediatR.xml", | |||||
| "lib/netstandard2.1/MediatR.dll", | |||||
| "lib/netstandard2.1/MediatR.xml", | |||||
| "mediatr.9.0.0.nupkg.sha512", | |||||
| "mediatr.nuspec" | |||||
| ] | |||||
| }, | |||||
| "MediatR.Extensions.Microsoft.DependencyInjection/9.0.0": { | |||||
| "sha512": "msreY4ogiPdIRWiCQVHQDytIQpsZCLWsixWPZ+Xs86KZrvtuiV8BDHbIT0kBmogynVYWNpspb3caw+86YU8L6w==", | |||||
| "type": "package", | |||||
| "path": "mediatr.extensions.microsoft.dependencyinjection/9.0.0", | |||||
| "files": [ | |||||
| ".nupkg.metadata", | |||||
| ".signature.p7s", | |||||
| "gradient_128x128.png", | |||||
| "lib/netstandard2.0/MediatR.Extensions.Microsoft.DependencyInjection.dll", | |||||
| "mediatr.extensions.microsoft.dependencyinjection.9.0.0.nupkg.sha512", | |||||
| "mediatr.extensions.microsoft.dependencyinjection.nuspec" | |||||
| ] | |||||
| }, | |||||
| "Microsoft.AspNetCore.WebUtilities/2.0.2": { | "Microsoft.AspNetCore.WebUtilities/2.0.2": { | ||||
| "sha512": "dvn80+p1AIQKOfJ+VrOhVMUktWRvJs7Zb+UapZGBNSyrCzTsYiXbb9C7Mzw+nGj5UevnLNFcWWc7BUlLMD2qpw==", | "sha512": "dvn80+p1AIQKOfJ+VrOhVMUktWRvJs7Zb+UapZGBNSyrCzTsYiXbb9C7Mzw+nGj5UevnLNFcWWc7BUlLMD2qpw==", | ||||
| "type": "package", | "type": "package", | ||||
| "net6.0": [ | "net6.0": [ | ||||
| "AutoMapper >= 10.1.1", | "AutoMapper >= 10.1.1", | ||||
| "AutoMapper.Extensions.Microsoft.DependencyInjection >= 8.1.1", | "AutoMapper.Extensions.Microsoft.DependencyInjection >= 8.1.1", | ||||
| "MediatR >= 9.0.0", | |||||
| "MediatR.Extensions.Microsoft.DependencyInjection >= 9.0.0", | |||||
| "PuppeteerSharp >= 5.1.0", | "PuppeteerSharp >= 5.1.0", | ||||
| "Swashbuckle.AspNetCore >= 6.2.3", | "Swashbuckle.AspNetCore >= 6.2.3", | ||||
| "iTextSharp >= 5.5.13.2" | "iTextSharp >= 5.5.13.2" | ||||
| "project": { | "project": { | ||||
| "version": "1.0.0", | "version": "1.0.0", | ||||
| "restore": { | "restore": { | ||||
| "projectUniqueName": "C:\\Users\\safet.purkovic\\Desktop\\PDFEngineAPI\\blackrock.reporting.api\\BlackRock.Reporting.API.csproj", | |||||
| "projectUniqueName": "C:\\Users\\safet.purkovic\\Desktop\\PDFEngineAPI\\BlackRock.Reporting.API\\BlackRock.Reporting.API.csproj", | |||||
| "projectName": "BlackRock.Reporting.API", | "projectName": "BlackRock.Reporting.API", | ||||
| "projectPath": "C:\\Users\\safet.purkovic\\Desktop\\PDFEngineAPI\\blackrock.reporting.api\\BlackRock.Reporting.API.csproj", | |||||
| "projectPath": "C:\\Users\\safet.purkovic\\Desktop\\PDFEngineAPI\\BlackRock.Reporting.API\\BlackRock.Reporting.API.csproj", | |||||
| "packagesPath": "C:\\Users\\safet.purkovic\\.nuget\\packages\\", | "packagesPath": "C:\\Users\\safet.purkovic\\.nuget\\packages\\", | ||||
| "outputPath": "C:\\Users\\safet.purkovic\\Desktop\\PDFEngineAPI\\blackrock.reporting.api\\obj\\", | |||||
| "outputPath": "C:\\Users\\safet.purkovic\\Desktop\\PDFEngineAPI\\BlackRock.Reporting.API\\obj\\", | |||||
| "projectStyle": "PackageReference", | "projectStyle": "PackageReference", | ||||
| "configFilePaths": [ | "configFilePaths": [ | ||||
| "C:\\Users\\safet.purkovic\\AppData\\Roaming\\NuGet\\NuGet.Config", | "C:\\Users\\safet.purkovic\\AppData\\Roaming\\NuGet\\NuGet.Config", | ||||
| "target": "Package", | "target": "Package", | ||||
| "version": "[8.1.1, )" | "version": "[8.1.1, )" | ||||
| }, | }, | ||||
| "MediatR": { | |||||
| "target": "Package", | |||||
| "version": "[9.0.0, )" | |||||
| }, | |||||
| "MediatR.Extensions.Microsoft.DependencyInjection": { | |||||
| "target": "Package", | |||||
| "version": "[9.0.0, )" | |||||
| }, | |||||
| "PuppeteerSharp": { | "PuppeteerSharp": { | ||||
| "target": "Package", | "target": "Package", | ||||
| "version": "[5.1.0, )" | "version": "[5.1.0, )" |
| { | { | ||||
| "version": 2, | "version": 2, | ||||
| "dgSpecHash": "lZlmYIi3Cg2opKlEbiFoYE6H9BgvvOEM3+0+aW0kE31T7D3G/Oy7WPj3mutvX+u9ug9AaHUj8qnCwbMkOZ1Wig==", | |||||
| "dgSpecHash": "Teft5L7Ebd3exyZsOKRNplT7EvscN/upe+xyulHx2r7/YP0nKqGhx7KH3F/u4VYFNAkTCqNwni6I15dKt2wjIA==", | |||||
| "success": true, | "success": true, | ||||
| "projectFilePath": "C:\\Users\\safet.purkovic\\Desktop\\PDFEngineAPI\\blackrock.reporting.api\\BlackRock.Reporting.API.csproj", | |||||
| "projectFilePath": "C:\\Users\\safet.purkovic\\Desktop\\PDFEngineAPI\\BlackRock.Reporting.API\\BlackRock.Reporting.API.csproj", | |||||
| "expectedPackageFiles": [ | "expectedPackageFiles": [ | ||||
| "C:\\Users\\safet.purkovic\\.nuget\\packages\\automapper\\10.1.1\\automapper.10.1.1.nupkg.sha512", | "C:\\Users\\safet.purkovic\\.nuget\\packages\\automapper\\10.1.1\\automapper.10.1.1.nupkg.sha512", | ||||
| "C:\\Users\\safet.purkovic\\.nuget\\packages\\automapper.extensions.microsoft.dependencyinjection\\8.1.1\\automapper.extensions.microsoft.dependencyinjection.8.1.1.nupkg.sha512", | "C:\\Users\\safet.purkovic\\.nuget\\packages\\automapper.extensions.microsoft.dependencyinjection\\8.1.1\\automapper.extensions.microsoft.dependencyinjection.8.1.1.nupkg.sha512", | ||||
| "C:\\Users\\safet.purkovic\\.nuget\\packages\\bouncycastle\\1.8.6.1\\bouncycastle.1.8.6.1.nupkg.sha512", | "C:\\Users\\safet.purkovic\\.nuget\\packages\\bouncycastle\\1.8.6.1\\bouncycastle.1.8.6.1.nupkg.sha512", | ||||
| "C:\\Users\\safet.purkovic\\.nuget\\packages\\itextsharp\\5.5.13.2\\itextsharp.5.5.13.2.nupkg.sha512", | "C:\\Users\\safet.purkovic\\.nuget\\packages\\itextsharp\\5.5.13.2\\itextsharp.5.5.13.2.nupkg.sha512", | ||||
| "C:\\Users\\safet.purkovic\\.nuget\\packages\\mediatr\\9.0.0\\mediatr.9.0.0.nupkg.sha512", | |||||
| "C:\\Users\\safet.purkovic\\.nuget\\packages\\mediatr.extensions.microsoft.dependencyinjection\\9.0.0\\mediatr.extensions.microsoft.dependencyinjection.9.0.0.nupkg.sha512", | |||||
| "C:\\Users\\safet.purkovic\\.nuget\\packages\\microsoft.aspnetcore.webutilities\\2.0.2\\microsoft.aspnetcore.webutilities.2.0.2.nupkg.sha512", | "C:\\Users\\safet.purkovic\\.nuget\\packages\\microsoft.aspnetcore.webutilities\\2.0.2\\microsoft.aspnetcore.webutilities.2.0.2.nupkg.sha512", | ||||
| "C:\\Users\\safet.purkovic\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\1.1.0\\microsoft.bcl.asyncinterfaces.1.1.0.nupkg.sha512", | "C:\\Users\\safet.purkovic\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\1.1.0\\microsoft.bcl.asyncinterfaces.1.1.0.nupkg.sha512", | ||||
| "C:\\Users\\safet.purkovic\\.nuget\\packages\\microsoft.csharp\\4.7.0\\microsoft.csharp.4.7.0.nupkg.sha512", | "C:\\Users\\safet.purkovic\\.nuget\\packages\\microsoft.csharp\\4.7.0\\microsoft.csharp.4.7.0.nupkg.sha512", |
| 2.0 | 2.0 | ||||
| 2.0 | 2.0 | ||||
| 2.0 | 2.0 | ||||
| 2.0 | |||||
| 2.0 | |||||
| 2.0 | |||||
| 2.0 | |||||
| 2.0 | |||||
| 2.0 | |||||
| 2.0 | |||||
| 2.0 | |||||
| 2.0 | |||||
| 2.0 | |||||
| 2.0 | |||||
| 2.0 |