| @@ -40,6 +40,8 @@ | |||
| <PackageReference Include="AutoMapper" Version="10.1.1" /> | |||
| <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="8.1.1" /> | |||
| <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="Swashbuckle.AspNetCore" Version="6.2.3" /> | |||
| </ItemGroup> | |||
| @@ -0,0 +1,7 @@ | |||
| <?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> | |||
| @@ -0,0 +1,127 @@ | |||
| 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 | |||
| } | |||
| @@ -0,0 +1,46 @@ | |||
| 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." }; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,47 @@ | |||
| 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." }; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,59 @@ | |||
| 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." }; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,43 @@ | |||
| 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." }; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,47 @@ | |||
| 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." }; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,47 @@ | |||
| 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." }; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,9 @@ | |||
| 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; } | |||
| } | |||
| } | |||
| @@ -0,0 +1,14 @@ | |||
| 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; } | |||
| } | |||
| } | |||
| @@ -0,0 +1,12 @@ | |||
| using System.ComponentModel.DataAnnotations; | |||
| namespace BlackRock.Reporting.API.Models | |||
| { | |||
| public class UserForm | |||
| { | |||
| [Required] | |||
| public string? Name { get; set; } | |||
| [Required] | |||
| public string? Email { get; set; } | |||
| } | |||
| } | |||
| @@ -5,7 +5,6 @@ using PuppeteerSharp; | |||
| namespace BlackRock.Reporting.API.Persistence | |||
| { | |||
| public class PdfGenerator : IPdfGenerator | |||
| { | |||
| private readonly IHostEnvironment host; | |||
| @@ -57,7 +56,6 @@ namespace BlackRock.Reporting.API.Persistence | |||
| await EvaluateScript(page, "dist/main.js"); | |||
| await EvaluateScript(page, "dist/main2.js"); | |||
| await page.PdfAsync(path, options); | |||
| } | |||
| } | |||
| private async Task EvaluateScript(Page page, string fileName) | |||
| @@ -1,15 +1,18 @@ | |||
| using AutoMapper; | |||
| using PuppeteerSharp; | |||
| using BlackRock.Reporting.API.Core.Models; | |||
| using BlackRock.Reporting.API.Models; | |||
| namespace BlackRock.Reporting.API.Profiles | |||
| { | |||
| public class Profiler : Profile | |||
| { | |||
| public Profiler() | |||
| { | |||
| CreateMap<OptionsForPdf, PdfOptions>().ConvertUsing<OptionsForPdfConverter>(); | |||
| CreateMap<User, UserDto>().ReverseMap(); | |||
| CreateMap<User, UserForm>().ReverseMap(); | |||
| } | |||
| } | |||
| @@ -17,21 +20,21 @@ namespace BlackRock.Reporting.API.Profiles | |||
| { | |||
| 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.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() | |||
| { | |||
| Bottom = source.MarginBottom, | |||
| @@ -1,6 +1,9 @@ | |||
| using BlackRock.Reporting.API.Core; | |||
| using BlackRock.Reporting.API.Mediator; | |||
| using BlackRock.Reporting.API.Persistence; | |||
| using BlackRock.Reporting.API.Profiles; | |||
| using MediatR; | |||
| using System.Reflection; | |||
| var builder = WebApplication.CreateBuilder(args); | |||
| @@ -12,7 +15,7 @@ builder.Services.AddScoped<IGenerator, PdfGenerator>(); | |||
| // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle | |||
| builder.Services.AddEndpointsApiExplorer(); | |||
| builder.Services.AddSwaggerGen(); | |||
| builder.Services.AddMediatR(typeof(Program)); | |||
| var app = builder.Build(); | |||
| // Configure the HTTP request pipeline. | |||
| @@ -1,17 +1,17 @@ | |||
| { | |||
| "format": 1, | |||
| "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": { | |||
| "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", | |||
| "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", | |||
| "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\\", | |||
| "outputPath": "C:\\Users\\safet.purkovic\\Desktop\\PDFEngineAPI\\blackrock.reporting.api\\obj\\", | |||
| "outputPath": "C:\\Users\\safet.purkovic\\Desktop\\PDFEngineAPI\\BlackRock.Reporting.API\\obj\\", | |||
| "projectStyle": "PackageReference", | |||
| "configFilePaths": [ | |||
| "C:\\Users\\safet.purkovic\\AppData\\Roaming\\NuGet\\NuGet.Config", | |||
| @@ -48,6 +48,14 @@ | |||
| "target": "Package", | |||
| "version": "[8.1.1, )" | |||
| }, | |||
| "MediatR": { | |||
| "target": "Package", | |||
| "version": "[9.0.0, )" | |||
| }, | |||
| "MediatR.Extensions.Microsoft.DependencyInjection": { | |||
| "target": "Package", | |||
| "version": "[9.0.0, )" | |||
| }, | |||
| "PuppeteerSharp": { | |||
| "target": "Package", | |||
| "version": "[5.1.0, )" | |||
| @@ -50,6 +50,28 @@ | |||
| "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": { | |||
| "type": "package", | |||
| "dependencies": { | |||
| @@ -1639,6 +1661,37 @@ | |||
| "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": { | |||
| "sha512": "dvn80+p1AIQKOfJ+VrOhVMUktWRvJs7Zb+UapZGBNSyrCzTsYiXbb9C7Mzw+nGj5UevnLNFcWWc7BUlLMD2qpw==", | |||
| "type": "package", | |||
| @@ -5682,6 +5735,8 @@ | |||
| "net6.0": [ | |||
| "AutoMapper >= 10.1.1", | |||
| "AutoMapper.Extensions.Microsoft.DependencyInjection >= 8.1.1", | |||
| "MediatR >= 9.0.0", | |||
| "MediatR.Extensions.Microsoft.DependencyInjection >= 9.0.0", | |||
| "PuppeteerSharp >= 5.1.0", | |||
| "Swashbuckle.AspNetCore >= 6.2.3", | |||
| "iTextSharp >= 5.5.13.2" | |||
| @@ -5693,11 +5748,11 @@ | |||
| "project": { | |||
| "version": "1.0.0", | |||
| "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", | |||
| "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\\", | |||
| "outputPath": "C:\\Users\\safet.purkovic\\Desktop\\PDFEngineAPI\\blackrock.reporting.api\\obj\\", | |||
| "outputPath": "C:\\Users\\safet.purkovic\\Desktop\\PDFEngineAPI\\BlackRock.Reporting.API\\obj\\", | |||
| "projectStyle": "PackageReference", | |||
| "configFilePaths": [ | |||
| "C:\\Users\\safet.purkovic\\AppData\\Roaming\\NuGet\\NuGet.Config", | |||
| @@ -5734,6 +5789,14 @@ | |||
| "target": "Package", | |||
| "version": "[8.1.1, )" | |||
| }, | |||
| "MediatR": { | |||
| "target": "Package", | |||
| "version": "[9.0.0, )" | |||
| }, | |||
| "MediatR.Extensions.Microsoft.DependencyInjection": { | |||
| "target": "Package", | |||
| "version": "[9.0.0, )" | |||
| }, | |||
| "PuppeteerSharp": { | |||
| "target": "Package", | |||
| "version": "[5.1.0, )" | |||
| @@ -1,13 +1,15 @@ | |||
| { | |||
| "version": 2, | |||
| "dgSpecHash": "lZlmYIi3Cg2opKlEbiFoYE6H9BgvvOEM3+0+aW0kE31T7D3G/Oy7WPj3mutvX+u9ug9AaHUj8qnCwbMkOZ1Wig==", | |||
| "dgSpecHash": "Teft5L7Ebd3exyZsOKRNplT7EvscN/upe+xyulHx2r7/YP0nKqGhx7KH3F/u4VYFNAkTCqNwni6I15dKt2wjIA==", | |||
| "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": [ | |||
| "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\\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\\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.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", | |||
| @@ -6,3 +6,15 @@ | |||
| 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 | |||