Refactor controllers to improve route clarity and consistency by adding route parameters and updating method signatures

This commit is contained in:
2025-11-13 22:17:59 +00:00
parent 76bebc68b7
commit 7c29302153
41 changed files with 160 additions and 139 deletions

View File

@@ -54,7 +54,7 @@ public class DocumentCompaniesController(MarechaiContext context) : ControllerBa
})
.ToListAsync();
[HttpGet]
[HttpGet("{id:int}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -113,7 +113,7 @@ public class DocumentCompaniesController(MarechaiContext context) : ControllerBa
return model.Id;
}
[HttpDelete]
[HttpDelete("{id:int}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -36,7 +36,7 @@ using Microsoft.EntityFrameworkCore;
namespace Marechai.Server.Controllers;
[Route("/document-people")]
[Route("/documents/people")]
[ApiController]
public class DocumentPeopleController(MarechaiContext context) : ControllerBase
{
@@ -57,7 +57,7 @@ public class DocumentPeopleController(MarechaiContext context) : ControllerBase
})
.ToListAsync();
[HttpGet]
[HttpGet("{id:int}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -125,7 +125,7 @@ public class DocumentPeopleController(MarechaiContext context) : ControllerBase
return model.Id;
}
[HttpDelete]
[HttpDelete("{id:int}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -35,7 +35,7 @@ using Microsoft.EntityFrameworkCore;
namespace Marechai.Server.Controllers;
[Route("/document-roles")]
[Route("/documents/roles")]
[ApiController]
public class DocumentRolesController(MarechaiContext context) : ControllerBase
{
@@ -52,7 +52,7 @@ public class DocumentRolesController(MarechaiContext context) : ControllerBase
})
.ToListAsync();
[HttpGet]
[HttpGet("enabled")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -66,7 +66,7 @@ public class DocumentRolesController(MarechaiContext context) : ControllerBase
})
.ToListAsync();
[HttpGet]
[HttpGet("{id}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -37,18 +37,20 @@ using Microsoft.EntityFrameworkCore;
namespace Marechai.Server.Controllers;
[Route("/document-scans")]
[Route("/documents/scans")]
[ApiController]
public class DocumentScansController(MarechaiContext context) : ControllerBase
{
[HttpGet]
[HttpGet("/documents/{documentId:long}/scans")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public async Task<List<Guid>> GetGuidsByDocumentAsync(long bookId) =>
await context.DocumentScans.Where(p => p.DocumentId == bookId).Select(p => p.Id).ToListAsync();
public Task<List<Guid>> GetGuidsByDocumentAsync(long documentId) => context.DocumentScans
.Where(p => p.DocumentId == documentId)
.Select(p => p.Id)
.ToListAsync();
[HttpGet]
[HttpGet("{id:Guid}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -149,7 +151,7 @@ public class DocumentScansController(MarechaiContext context) : ControllerBase
return model.Id;
}
[HttpDelete]
[HttpDelete("{id:Guid}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -36,16 +36,16 @@ using Microsoft.EntityFrameworkCore;
namespace Marechai.Server.Controllers;
[Route("/documents-by-machine")]
[Route("/machines/documents")]
[ApiController]
public class DocumentsByMachineController(MarechaiContext context) : ControllerBase
{
[HttpGet]
[HttpGet("/documents/{documentId:long}/machines")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public Task<List<DocumentByMachineDto>> GetByDocument(long bookId) => context.DocumentsByMachines
.Where(p => p.DocumentId == bookId)
public Task<List<DocumentByMachineDto>> GetByDocument(long documentId) => context.DocumentsByMachines
.Where(p => p.DocumentId == documentId)
.Select(p => new DocumentByMachineDto
{
Id = p.Id,
@@ -56,7 +56,7 @@ public class DocumentsByMachineController(MarechaiContext context) : ControllerB
.OrderBy(p => p.Machine)
.ToListAsync();
[HttpDelete]
[HttpDelete("{id:long}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -36,16 +36,16 @@ using Microsoft.EntityFrameworkCore;
namespace Marechai.Server.Controllers;
[Route("/documents-by-machine-family")]
[Route("/machine-families/documents")]
[ApiController]
public class DocumentsByMachineFamilyController(MarechaiContext context) : ControllerBase
{
[HttpGet]
[HttpGet("/documents/{documentId:long}/machine-families")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public Task<List<DocumentByMachineFamilyDto>> GetByDocument(long bookId) => context.DocumentsByMachineFamilies
.Where(p => p.DocumentId == bookId)
public Task<List<DocumentByMachineFamilyDto>> GetByDocument(long documentId) => context.DocumentsByMachineFamilies
.Where(p => p.DocumentId == documentId)
.Select(p => new DocumentByMachineFamilyDto
{
Id = p.Id,
@@ -56,7 +56,7 @@ public class DocumentsByMachineFamilyController(MarechaiContext context) : Contr
.OrderBy(p => p.MachineFamily)
.ToListAsync();
[HttpDelete]
[HttpDelete("{id:long}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -59,7 +59,7 @@ public class DocumentsController(MarechaiContext context) : ControllerBase
})
.ToListAsync();
[HttpGet]
[HttpGet("{id:long}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -127,14 +127,14 @@ public class DocumentsController(MarechaiContext context) : ControllerBase
return model.Id;
}
[HttpGet]
[HttpGet("{id:long}/synopsis")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public async Task<string> GetSynopsisTextAsync(int id) =>
public async Task<string> GetSynopsisTextAsync(long id) =>
(await context.Documents.FirstOrDefaultAsync(d => d.Id == id))?.Synopsis;
[HttpDelete]
[HttpDelete("{id:long}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -62,7 +62,7 @@ public class DumpsController(MarechaiContext context) : ControllerBase
})
.ToListAsync();
[HttpGet]
[HttpGet("{id:ulong}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -134,7 +134,7 @@ public class DumpsController(MarechaiContext context) : ControllerBase
return model.Id;
}
[HttpDelete]
[HttpDelete("{id:ulong}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -36,11 +36,11 @@ using Microsoft.EntityFrameworkCore;
namespace Marechai.Server.Controllers;
[Route("/gpus-by-machine")]
[Route("/machines/gpus")]
[ApiController]
public class GpusByMachineController(MarechaiContext context) : ControllerBase
{
[HttpGet]
[HttpGet("/machines/gpus/by-machine/{machineId:int}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -58,7 +58,7 @@ public class GpusByMachineController(MarechaiContext context) : ControllerBase
.ThenBy(g => g.Name)
.ToListAsync();
[HttpDelete]
[HttpDelete("{id:long}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -57,7 +57,7 @@ public class GpusController(MarechaiContext context) : ControllerBase
})
.ToListAsync();
[HttpGet]
[HttpGet("/machines/{machineId:int}/gpus")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -82,7 +82,7 @@ public class GpusController(MarechaiContext context) : ControllerBase
})
.ToListAsync();
[HttpGet]
[HttpGet("{id:int}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -162,7 +162,7 @@ public class GpusController(MarechaiContext context) : ControllerBase
return model.Id;
}
[HttpDelete]
[HttpDelete("{id:int}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -40,11 +40,11 @@ namespace Marechai.Server.Controllers;
[ApiController]
public class InstructionSetExtensionsByProcessorController(MarechaiContext context) : ControllerBase
{
[HttpGet]
[HttpGet("/processor/{processorId:int}/instruction-set-extensions")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public async Task<List<InstructionSetExtensionByProcessorDto>> GetByProcessor(int processorId) => await context
public Task<List<InstructionSetExtensionByProcessorDto>> GetByProcessor(int processorId) => context
.InstructionSetExtensionsByProcessor.Where(e => e.ProcessorId == processorId)
.Select(e => new InstructionSetExtensionByProcessorDto
{
@@ -57,7 +57,7 @@ public class InstructionSetExtensionsByProcessorController(MarechaiContext conte
.OrderBy(e => e.Extension)
.ToListAsync();
[HttpDelete]
[HttpDelete("{id:int}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -52,7 +52,7 @@ public class InstructionSetExtensionsController(MarechaiContext context) : Contr
})
.ToListAsync();
[HttpGet]
[HttpGet("{id:int}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -108,7 +108,7 @@ public class InstructionSetExtensionsController(MarechaiContext context) : Contr
return model.Id;
}
[HttpDelete]
[HttpDelete("{id:int}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -130,12 +130,12 @@ public class InstructionSetExtensionsController(MarechaiContext context) : Contr
return Ok();
}
[HttpGet]
[HttpGet("verify-unique/{extension}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public bool VerifyUnique(string extension) =>
!context.InstructionSetExtensions.Any(i => string.Equals(i.Extension,
extension,
StringComparison.InvariantCultureIgnoreCase));
StringComparison.OrdinalIgnoreCase));
}

View File

@@ -52,7 +52,7 @@ public class InstructionSetsController(MarechaiContext context) : ControllerBase
})
.ToListAsync();
[HttpGet]
[HttpGet("{id:int}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -108,7 +108,7 @@ public class InstructionSetsController(MarechaiContext context) : ControllerBase
return model.Id;
}
[HttpDelete]
[HttpDelete("{id:int}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -130,10 +130,10 @@ public class InstructionSetsController(MarechaiContext context) : ControllerBase
return Ok();
}
[HttpGet]
[HttpGet("verify-unique/{name}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public bool VerifyUnique(string name) =>
!context.InstructionSets.Any(i => string.Equals(i.Name, name, StringComparison.InvariantCultureIgnoreCase));
!context.InstructionSets.Any(i => string.Equals(i.Name, name, StringComparison.OrdinalIgnoreCase));
}

View File

@@ -55,7 +55,7 @@ public class LicensesController(MarechaiContext context) : ControllerBase
})
.ToListAsync();
[HttpGet]
[HttpGet("{id:int}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -126,7 +126,7 @@ public class LicensesController(MarechaiContext context) : ControllerBase
return model.Id;
}
[HttpDelete]
[HttpDelete("{id:int}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -55,7 +55,7 @@ public class MachineFamiliesController(MarechaiContext context) : ControllerBase
.OrderBy(m => m.Name)
.ToListAsync();
[HttpGet]
[HttpGet("{id:int}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -114,7 +114,7 @@ public class MachineFamiliesController(MarechaiContext context) : ControllerBase
return model.Id;
}
[HttpDelete]
[HttpDelete("{id:int}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -37,18 +37,20 @@ using Microsoft.EntityFrameworkCore;
namespace Marechai.Server.Controllers;
[Route("/machine-photos")]
[Route("/machines/photos")]
[ApiController]
public class MachinePhotosController(MarechaiContext context) : ControllerBase
{
[HttpGet]
[HttpGet("/machines/{machineId:int}/photos")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public async Task<List<Guid>> GetGuidsByMachineAsync(int machineId) =>
await context.MachinePhotos.Where(p => p.MachineId == machineId).Select(p => p.Id).ToListAsync();
public Task<List<Guid>> GetGuidsByMachineAsync(int machineId) => context.MachinePhotos
.Where(p => p.MachineId == machineId)
.Select(p => p.Id)
.ToListAsync();
[HttpGet]
[HttpGet("{id:Guid}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -36,7 +36,7 @@ using Microsoft.EntityFrameworkCore;
namespace Marechai.Server.Controllers;
[Route("/magazine-issues")]
[Route("/magazines/issues")]
[ApiController]
public class MagazineIssuesController(MarechaiContext context) : ControllerBase
{
@@ -61,7 +61,7 @@ public class MagazineIssuesController(MarechaiContext context) : ControllerBase
})
.ToListAsync();
[HttpGet]
[HttpGet("{id:long}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -135,7 +135,7 @@ public class MagazineIssuesController(MarechaiContext context) : ControllerBase
return model.Id;
}
[HttpDelete]
[HttpDelete("{id:long}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -37,18 +37,20 @@ using Microsoft.EntityFrameworkCore;
namespace Marechai.Server.Controllers;
[Route("/magazine-scans")]
[Route("/magazines/scans")]
[ApiController]
public class MagazineScansController(MarechaiContext context) : ControllerBase
{
[HttpGet]
[HttpGet("/magazines/{magazineId:long}/scans")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public async Task<List<Guid>> GetGuidsByMagazineAsync(long bookId) =>
await context.MagazineScans.Where(p => p.MagazineId == bookId).Select(p => p.Id).ToListAsync();
public Task<List<Guid>> GetGuidsByMagazineAsync(long magazineId) => context.MagazineScans
.Where(p => p.MagazineId == magazineId)
.Select(p => p.Id)
.ToListAsync();
[HttpGet]
[HttpGet("{id:Guid}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -149,7 +151,7 @@ public class MagazineScansController(MarechaiContext context) : ControllerBase
return model.Id;
}
[HttpDelete]
[HttpDelete("{id:Guid}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -40,12 +40,12 @@ namespace Marechai.Server.Controllers;
[ApiController]
public class MagazinesByMachineController(MarechaiContext context) : ControllerBase
{
[HttpGet]
[HttpGet("/magazines/{magazineId:long}/machines")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public Task<List<MagazineByMachineDto>> GetByMagazine(long bookId) => context.MagazinesByMachines
.Where(p => p.MagazineId == bookId)
public Task<List<MagazineByMachineDto>> GetByMagazine(long magazineId) => context.MagazinesByMachines
.Where(p => p.MagazineId == magazineId)
.Select(p => new MagazineByMachineDto
{
Id = p.Id,
@@ -56,7 +56,7 @@ public class MagazinesByMachineController(MarechaiContext context) : ControllerB
.OrderBy(p => p.Machine)
.ToListAsync();
[HttpDelete]
[HttpDelete("{id:long}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -40,12 +40,12 @@ namespace Marechai.Server.Controllers;
[ApiController]
public class MagazinesByMachineFamilyController(MarechaiContext context) : ControllerBase
{
[HttpGet]
[HttpGet("/magazines/{magazineId:long}/machine-families")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public Task<List<MagazineByMachineFamilyDto>> GetByMagazine(long bookId) => context.MagazinesByMachinesFamilies
.Where(p => p.MagazineId == bookId)
public Task<List<MagazineByMachineFamilyDto>> GetByMagazine(long magazineId) => context.MagazinesByMachinesFamilies
.Where(p => p.MagazineId == magazineId)
.Select(p => new MagazineByMachineFamilyDto
{
Id = p.Id,
@@ -56,7 +56,7 @@ public class MagazinesByMachineFamilyController(MarechaiContext context) : Contr
.OrderBy(p => p.MachineFamily)
.ToListAsync();
[HttpDelete]
[HttpDelete("{id:long}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -60,7 +60,7 @@ public class MagazinesController(MarechaiContext context) : ControllerBase
})
.ToListAsync();
[HttpGet]
[HttpGet("titles")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -73,7 +73,7 @@ public class MagazinesController(MarechaiContext context) : ControllerBase
})
.ToListAsync();
[HttpGet]
[HttpGet("{id:long}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -144,14 +144,14 @@ public class MagazinesController(MarechaiContext context) : ControllerBase
return model.Id;
}
[HttpGet]
[HttpGet("{id:int}/synopsis")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public async Task<string> GetSynopsisTextAsync(int id) =>
(await context.Magazines.FirstOrDefaultAsync(d => d.Id == id))?.Synopsis;
[HttpDelete]
[HttpDelete("{id:long}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -36,7 +36,7 @@ using Microsoft.EntityFrameworkCore;
namespace Marechai.Server.Controllers;
[Route("/media")]
[Route("/medias")]
[ApiController]
public class MediaController(MarechaiContext context) : ControllerBase
{
@@ -76,7 +76,7 @@ public class MediaController(MarechaiContext context) : ControllerBase
})
.ToListAsync();
[HttpGet]
[HttpGet("titles")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -88,7 +88,7 @@ public class MediaController(MarechaiContext context) : ControllerBase
})
.ToListAsync();
[HttpGet]
[HttpGet("{id:ulong}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -215,7 +215,7 @@ public class MediaController(MarechaiContext context) : ControllerBase
return model.Id;
}
[HttpDelete]
[HttpDelete("{id:long}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -40,7 +40,7 @@ namespace Marechai.Server.Controllers;
[ApiController]
public class MemoriesByMachineController(MarechaiContext context) : ControllerBase
{
[HttpGet]
[HttpGet("/machines/{machineId:int}/memories")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -61,7 +61,7 @@ public class MemoriesByMachineController(MarechaiContext context) : ControllerBa
.ThenBy(m => m.Speed)
.ToListAsync();
[HttpDelete]
[HttpDelete("{id:long}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -34,12 +34,13 @@ using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Localization;
namespace Marechai.Server.Controllers;
[Route("/news")]
[ApiController]
public class NewsController(MarechaiContext context) : ControllerBase
public class NewsController(MarechaiContext context, IStringLocalizer<NewsController> localizer) : ControllerBase
{
[HttpGet]
[AllowAnonymous]
@@ -55,17 +56,30 @@ public class NewsController(MarechaiContext context) : ControllerBase
})
.ToListAsync();
[HttpGet]
[HttpGet("latest")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public List<NewsDto> GetNews()
{
List<NewsDto> news = new();
List<NewsDto> news = [];
foreach(News @new in context.News.OrderByDescending(t => t.Date).Take(10).ToList())
var newsWithMachines = context.News.OrderByDescending(t => t.Date)
.Take(10)
.Join(context.Machines.Include(m => m.Company),
n => n.AddedId,
m => m.Id,
(n, m) => new
{
News = n,
Machine = m
})
.ToList();
foreach(var item in newsWithMachines)
{
Machine machine = context.Machines.Find(@new.AddedId);
News @new = item.News;
Machine machine = item.Machine;
if(machine is null) continue;
@@ -75,7 +89,7 @@ public class NewsController(MarechaiContext context) : ControllerBase
news.Add(new NewsDto(@new.AddedId,
localizer["New computer in database"],
@new.Date,
"machine",
"computers",
$"{machine.Company.Name} {machine.Name}"));
break;
@@ -83,7 +97,7 @@ public class NewsController(MarechaiContext context) : ControllerBase
news.Add(new NewsDto(@new.AddedId,
localizer["New console in database"],
@new.Date,
"machine",
"consoles",
$"{machine.Company.Name} {machine.Name}"));
break;
@@ -92,7 +106,7 @@ public class NewsController(MarechaiContext context) : ControllerBase
news.Add(new NewsDto(@new.AddedId,
localizer["New computer in collection"],
@new.Date,
"machine",
"computers",
$"{machine.Company.Name} {machine.Name}"));
break;
@@ -101,7 +115,7 @@ public class NewsController(MarechaiContext context) : ControllerBase
news.Add(new NewsDto(@new.AddedId,
localizer["New console in collection"],
@new.Date,
"machine",
"consoles",
$"{machine.Company.Name} {machine.Name}"));
break;
@@ -110,7 +124,7 @@ public class NewsController(MarechaiContext context) : ControllerBase
news.Add(new NewsDto(@new.AddedId,
localizer["Updated computer in database"],
@new.Date,
"machine",
"computers",
$"{machine.Company.Name} {machine.Name}"));
break;
@@ -119,7 +133,7 @@ public class NewsController(MarechaiContext context) : ControllerBase
news.Add(new NewsDto(@new.AddedId,
localizer["Updated console in database"],
@new.Date,
"machine",
"consoles",
$"{machine.Company.Name} {machine.Name}"));
break;
@@ -128,7 +142,7 @@ public class NewsController(MarechaiContext context) : ControllerBase
news.Add(new NewsDto(@new.AddedId,
localizer["Updated computer in collection"],
@new.Date,
"machine",
"computers",
$"{machine.Company.Name} {machine.Name}"));
break;
@@ -137,7 +151,7 @@ public class NewsController(MarechaiContext context) : ControllerBase
news.Add(new NewsDto(@new.AddedId,
localizer["Updated console in collection"],
@new.Date,
"machine",
"consoles",
$"{machine.Company.Name} {machine.Name}"));
break;

View File

@@ -40,7 +40,7 @@ namespace Marechai.Server.Controllers;
[ApiController]
public class PeopleByBookController(MarechaiContext context) : ControllerBase
{
[HttpGet]
[HttpGet("/books/{bookId:int}/people")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -62,7 +62,7 @@ public class PeopleByBookController(MarechaiContext context) : ControllerBase
.ThenBy(p => p.Role)
.ToList();
[HttpDelete]
[HttpDelete("{id:long}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -40,7 +40,7 @@ namespace Marechai.Server.Controllers;
[ApiController]
public class PeopleByDocumentController(MarechaiContext context) : ControllerBase
{
[HttpGet]
[HttpGet("/documents/{documentId:int}/people")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -62,7 +62,7 @@ public class PeopleByDocumentController(MarechaiContext context) : ControllerBas
.ThenBy(p => p.Role)
.ToList();
[HttpDelete]
[HttpDelete("{id:long}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -40,7 +40,7 @@ namespace Marechai.Server.Controllers;
[ApiController]
public class PeopleByMagazineController(MarechaiContext context) : ControllerBase
{
[HttpGet]
[HttpGet("/magazines/{magazineId:long}/people")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -62,7 +62,7 @@ public class PeopleByMagazineController(MarechaiContext context) : ControllerBas
.ThenBy(p => p.Role)
.ToList();
[HttpDelete]
[HttpDelete("{id:long}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -23,6 +23,7 @@
// Copyright © 2003-2025 Natalia Portillo
*******************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Claims;
@@ -65,7 +66,7 @@ public class PeopleController(MarechaiContext context) : ControllerBase
})
.ToListAsync();
[HttpGet]
[HttpGet("{id:int}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -110,7 +111,7 @@ public class PeopleController(MarechaiContext context) : ControllerBase
model.Webpage = dto.Webpage;
model.Twitter = dto.Twitter;
model.Facebook = dto.Facebook;
model.Photo = dto.Photo;
model.Photo = dto.Photo ?? Guid.Empty;
model.Alias = dto.Alias;
model.DisplayName = dto.DisplayName;
@@ -140,7 +141,7 @@ public class PeopleController(MarechaiContext context) : ControllerBase
Webpage = dto.Webpage,
Twitter = dto.Twitter,
Facebook = dto.Facebook,
Photo = dto.Photo,
Photo = dto.Photo ?? Guid.Empty,
Alias = dto.Alias,
DisplayName = dto.DisplayName
};
@@ -151,7 +152,7 @@ public class PeopleController(MarechaiContext context) : ControllerBase
return model.Id;
}
[HttpDelete]
[HttpDelete("{id:int}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -40,7 +40,7 @@ namespace Marechai.Server.Controllers;
[ApiController]
public class ProcessorsByMachineController(MarechaiContext context) : ControllerBase
{
[HttpGet]
[HttpGet("by-machine/{machineId:int}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -59,7 +59,7 @@ public class ProcessorsByMachineController(MarechaiContext context) : Controller
.ThenBy(p => p.Name)
.ToListAsync();
[HttpDelete]
[HttpDelete("{id:long}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -81,7 +81,7 @@ public class ProcessorsController(MarechaiContext context) : ControllerBase
.ThenBy(p => p.Name)
.ToListAsync();
[HttpGet]
[HttpGet("/machines/{machineId:int}/processors")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -122,7 +122,7 @@ public class ProcessorsController(MarechaiContext context) : ControllerBase
.ThenBy(p => p.Name)
.ToListAsync();
[HttpGet]
[HttpGet("{id:int}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -251,7 +251,7 @@ public class ProcessorsController(MarechaiContext context) : ControllerBase
return model.Id;
}
[HttpDelete]
[HttpDelete("{id:int}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -40,7 +40,7 @@ namespace Marechai.Server.Controllers;
[ApiController]
public class ResolutionsByGpuController(MarechaiContext context) : ControllerBase
{
[HttpGet]
[HttpGet("gpus/{gpuId:int}/resolutions")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -74,7 +74,7 @@ public class ResolutionsByGpuController(MarechaiContext context) : ControllerBas
.ThenBy(r => r.Resolution.Palette)
.ToList();
[HttpDelete]
[HttpDelete("{id:long}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -40,12 +40,12 @@ namespace Marechai.Server.Controllers;
[ApiController]
public class ResolutionsByScreenController(MarechaiContext context) : ControllerBase
{
[HttpGet]
[HttpGet("/screens/{screenId:int}/resolutions")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public async Task<List<ResolutionByScreenDto>> GetByScreen(int resolutionId) => (await context.ResolutionsByScreen
.Where(r => r.ResolutionId == resolutionId)
public async Task<List<ResolutionByScreenDto>> GetByScreen(int screenId) => (await context.ResolutionsByScreen
.Where(r => r.ScreenId == screenId)
.Select(r => new ResolutionByScreenDto
{
Id = r.Id,
@@ -70,7 +70,7 @@ public class ResolutionsByScreenController(MarechaiContext context) : Controller
.ThenBy(r => r.Resolution.Palette)
.ToList();
[HttpDelete]
[HttpDelete("{id:long}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -62,7 +62,7 @@ public class ResolutionsController(MarechaiContext context) : ControllerBase
.ThenBy(r => r.Palette)
.ToListAsync();
[HttpGet]
[HttpGet("{id:int}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -133,7 +133,7 @@ public class ResolutionsController(MarechaiContext context) : ControllerBase
return model.Id;
}
[HttpDelete]
[HttpDelete("{id:int}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -40,7 +40,7 @@ namespace Marechai.Server.Controllers;
[ApiController]
public class ScreensByMachineController(MarechaiContext context) : ControllerBase
{
[HttpGet]
[HttpGet("/machines/{machineId:int}/screens")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -74,7 +74,7 @@ public class ScreensByMachineController(MarechaiContext context) : ControllerBas
})
.ToListAsync();
[HttpDelete]
[HttpDelete("{id:long}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -71,7 +71,7 @@ public class ScreensController(MarechaiContext context) : ControllerBase
.ThenBy(s => s.Size)
.ToList();
[HttpGet]
[HttpGet("{id:int}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -156,7 +156,7 @@ public class ScreensController(MarechaiContext context) : ControllerBase
return model.Id;
}
[HttpDelete]
[HttpDelete("{id:int}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -36,7 +36,7 @@ using Microsoft.EntityFrameworkCore;
namespace Marechai.Server.Controllers;
[Route("/software-families")]
[Route("/software/families")]
[ApiController]
public class SoftwareFamiliesController(MarechaiContext context) : ControllerBase
{
@@ -55,7 +55,7 @@ public class SoftwareFamiliesController(MarechaiContext context) : ControllerBas
})
.ToListAsync();
[HttpGet]
[HttpGet("{id:ulong}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -117,7 +117,7 @@ public class SoftwareFamiliesController(MarechaiContext context) : ControllerBas
return model.Id;
}
[HttpDelete]
[HttpDelete("{id:long}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -36,7 +36,7 @@ using Microsoft.EntityFrameworkCore;
namespace Marechai.Server.Controllers;
[Route("/software-variants")]
[Route("/software/variants")]
[ApiController]
public class SoftwareVariantsController(MarechaiContext context) : ControllerBase
{
@@ -73,7 +73,7 @@ public class SoftwareVariantsController(MarechaiContext context) : ControllerBas
})
.ToListAsync();
[HttpGet]
[HttpGet("{id:ulong}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -169,7 +169,7 @@ public class SoftwareVariantsController(MarechaiContext context) : ControllerBas
return model.Id;
}
[HttpDelete]
[HttpDelete("{id:ulong}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -36,7 +36,7 @@ using Microsoft.EntityFrameworkCore;
namespace Marechai.Server.Controllers;
[Route("/software-versions")]
[Route("/software/versions")]
[ApiController]
public class SoftwareVersionsController(MarechaiContext context) : ControllerBase
{
@@ -63,7 +63,7 @@ public class SoftwareVersionsController(MarechaiContext context) : ControllerBas
})
.ToListAsync();
[HttpGet]
[HttpGet("{id:ulong}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -139,7 +139,7 @@ public class SoftwareVersionsController(MarechaiContext context) : ControllerBas
return model.Id;
}
[HttpDelete]
[HttpDelete("{id:ulong}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -40,7 +40,7 @@ namespace Marechai.Server.Controllers;
[ApiController]
public class SoundSynthsByMachineController(MarechaiContext context) : ControllerBase
{
[HttpGet]
[HttpGet("by-machine/{machineId:int}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -58,7 +58,7 @@ public class SoundSynthsByMachineController(MarechaiContext context) : Controlle
.ThenBy(g => g.Name)
.ToListAsync();
[HttpDelete]
[HttpDelete("{id:long}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -64,7 +64,7 @@ public class SoundSynthsController(MarechaiContext context) : ControllerBase
})
.ToListAsync();
[HttpGet]
[HttpGet("/machines/{machineId:int}/sound-synths")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -91,7 +91,7 @@ public class SoundSynthsController(MarechaiContext context) : ControllerBase
})
.ToListAsync();
[HttpGet]
[HttpGet("{id:int}")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -175,7 +175,7 @@ public class SoundSynthsController(MarechaiContext context) : ControllerBase
return model.Id;
}
[HttpDelete]
[HttpDelete("{id:int}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]

View File

@@ -40,7 +40,7 @@ namespace Marechai.Server.Controllers;
[ApiController]
public class StorageByMachineController(MarechaiContext context) : ControllerBase
{
[HttpGet]
[HttpGet("/machines/{machineId:int}/storage")]
[AllowAnonymous]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -59,7 +59,7 @@ public class StorageByMachineController(MarechaiContext context) : ControllerBas
.ThenBy(s => s.Capacity)
.ToListAsync();
[HttpDelete]
[HttpDelete("{id:long}")]
[Authorize(Roles = "Admin,UberAdmin")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]