using Core.Blueprint.Storage.Adapters; using Core.Cerberos.Adapters; using Core.Cerberos.Adapters.Common.Constants; using Core.Cerberos.Adapters.Common.Enums; using Core.Cerberos.External.Clients.Requests; using Microsoft.AspNetCore.Mvc; using Refit; namespace Core.Cerberos.External.Clients { public interface ICerberosServiceClient { [Get("/v1/User")] Task> GetAllUsersAsync(CancellationToken cancellationToken = default); [Get("/v1/User/" + Routes.Id)] Task GetUserByIdAsync([FromRoute] string id, CancellationToken cancellationToken = default); [Get("/v1/User/" + Routes.Email)] Task GetUserByEmailAsync([FromRoute] string email, CancellationToken cancellationToken = default); [Get("/v1/User/{email}/ValidateExistence")] Task ValidateUserExistence([FromRoute] string email, CancellationToken cancellationToken = default); [Post("/v1/User/" + Routes.Register)] Task CreateUserAsync([FromBody] UserRequest newUser, [FromRoute] bool sendInvitation, CancellationToken cancellationToken = default); [Put("/v1/User/" + Routes.Id)] Task UpdateUserAsync([FromBody] UserAdapter entity, [FromRoute] string id, CancellationToken cancellationToken = default); [Patch("/v1/User/" + Routes.LogIn)] Task LoginUserAsync([FromRoute] string email, CancellationToken cancellationToken = default); [Patch("/v1/User/" + Routes.LogOut)] Task LogoutUserAsync([FromRoute] string email, CancellationToken cancellationToken = default); [Patch("/v1/User/" + Routes.ChangeStatus)] Task ChangeUserStatusAsync([FromRoute] string id, StatusEnum newStatus, CancellationToken cancellationToken = default); [Get("/v1/User/{email}/GetTokenAdapter")] Task GetTokenAdapter([FromRoute] string email, CancellationToken cancellationToken = default); [Post("/v1/User/" + Routes.AddCompany)] Task AddCompanyToUserAsync([FromRoute] string userId, [FromRoute] string companyId, CancellationToken cancellationToken = default); [Delete("/v1/User/" + Routes.RemoveCompany)] Task RemoveCompanyToUserAsync([FromRoute] string userId, [FromRoute] string companyId, CancellationToken cancellationToken = default); [Post("/v1/User/" + Routes.AddProject)] Task AddProjectToUserAsync([FromRoute] string userId, [FromRoute] string projectId, CancellationToken cancellationToken = default); [Delete("/v1/User/" + Routes.RemoveProject)] Task RemoveProjectToUserAsync([FromRoute] string userId, [FromRoute] string projectId, CancellationToken cancellationToken = default); [Get("/v1/User/GetConsentFormPDF")] Task GetConsentFormPDFAsync(CancellationToken cancellationToken = default); [Patch("/v1/User/AcceptUserConsentForm")] Task AcceptUserConsentFormAsync(CancellationToken cancellationToken = default); [Get("/v1/Role")] Task> GetAllRolesAsync(CancellationToken cancellationToken = default); [Get("/v1/Role/" + Routes.Id)] Task GetRoleByIdAsync([FromRoute] string id, CancellationToken cancellationToken = default); [Post("/v1/Role")] Task CreateRoleAsync([FromBody] RoleRequest newRole, CancellationToken cancellationToken = default); [Put("/v1/Role/" + Routes.Id)] Task UpdateRoleAsync([FromBody] RoleAdapter entity, [FromRoute] string id, CancellationToken cancellationToken = default); [Patch("/v1/Role/" + Routes.ChangeStatus)] Task ChangeRoleStatusAsync([FromRoute] string id, [FromRoute] StatusEnum newStatus, CancellationToken cancellationToken = default); [Post("/v1/Role/" + Routes.AddApplication)] Task AddApplicationToRoleAsync([FromRoute] string RoleId, [FromRoute] ApplicationsEnum application, CancellationToken cancellationToken = default); [Delete("/v1/Role/" + Routes.RemoveApplication)] Task RemoveApplicationToRoleAsync([FromRoute] string RoleId, [FromRoute] ApplicationsEnum application, CancellationToken cancellationToken = default); [Get("/v1/Permission")] Task> GetAllPermissionsAsync(CancellationToken cancellationToken = default); [Post("/v1/Permission/" + Routes.GetPermissionList)] Task> GetAllPermissionsByListAsync([FromBody] string[] request, CancellationToken cancellationToken = default); [Get("/v1/Permission/" + Routes.Id)] Task GetPermissionByIdAsync([FromRoute] string id, CancellationToken cancellationToken = default); [Post("/v1/Permission")] Task CreatePermissionAsync([FromBody] PermissionRequest newPermission, CancellationToken cancellationToken = default); [Put("/v1/Permission/" + Routes.Id)] Task UpdatePermissionAsync([FromBody] PermissionAdapter entity, [FromRoute] string id, CancellationToken cancellationToken = default); [Patch("/v1/Permission/" + Routes.ChangeStatus)] Task ChangeStatusPermissionAsync([FromRoute] string id, [FromRoute] StatusEnum newStatus, CancellationToken cancellationToken = default); [Get("/v1/Module")] Task> GetAllModulesAsync(CancellationToken cancellationToken = default); [Post("/v1/Module/" + Routes.GetModuleList)] Task> GetAllModulesByListAsync([FromBody] string[] request, CancellationToken cancellationToken = default); [Get("/v1/Module/" + Routes.Id)] Task GetModuleByIdAsync([FromRoute] string id, CancellationToken cancellationToken = default); [Post("/v1/Module")] Task CreateModuleAsync([FromBody] ModuleRequest newModule, CancellationToken cancellationToken = default); [Put("/v1/Module/" + Routes.Id)] Task UpdateModuleAsync([FromBody] ModuleAdapter entity, [FromRoute] string id, CancellationToken cancellationToken = default); [Patch("/v1/Module/" + Routes.ChangeStatus)] Task ChangeStatusModuleAsync([FromRoute] string id, [FromRoute] StatusEnum newStatus, CancellationToken cancellationToken = default); } }