PHP Classes

File: backend/dotnet/Controllers/UsersController.cs

Recommend this page to a friend!
  Packages of Everton C B Junior   Igreja Aberta   backend/dotnet/Controllers/UsersController.cs   Download  
File: backend/dotnet/Controllers/UsersController.cs
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: Igreja Aberta
Church activity management application
Author: By
Last change:
Date: 11 days ago
Size: 5,537 bytes
 

Contents

Class file image Download
using Jdb.Api.Data; using Jdb.Api.DTOs; using Jdb.Api.DTOs.Users; using Jdb.Api.Models; using Jdb.Api.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; namespace Jdb.Api.Controllers { [ApiController] [Authorize] [Route("api/[controller]")] public class UsersController : ApiControllerBase { private readonly JdbContext _context; private readonly IPasswordHasher _passwordHasher; public UsersController(JdbContext context, IPasswordHasher passwordHasher) { _context = context; _passwordHasher = passwordHasher; } [HttpGet] public async Task<ActionResult<ApiResponse<IEnumerable<UserResponse>>>> GetAll() { List<UserResponse> users = await _context.Users .AsNoTracking() .OrderBy(u => u.Name) .Select(u => new UserResponse { Id = u.Id, CongregationId = u.CongregationId, Name = u.Name, Email = u.Email, Status = u.Status, LastLoginAt = u.LastLoginAt, CreatedAt = u.CreatedAt, UpdatedAt = u.UpdatedAt }) .ToListAsync(); return ApiOk<IEnumerable<UserResponse>>(users, "Usuarios listados com sucesso."); } [HttpGet("{id:long}")] public async Task<ActionResult<ApiResponse<UserResponse>>> Get(long id) { User? user = await _context.Users.AsNoTracking().FirstOrDefaultAsync(u => u.Id == id); if (user is null) { return ApiNotFound<UserResponse>("Usuario nao encontrado."); } return ApiOk(ToResponse(user), "Usuario encontrado com sucesso."); } [HttpPost] public async Task<ActionResult<ApiResponse<UserResponse>>> Create(CreateUserRequest request) { string email = request.Email.Trim().ToLowerInvariant(); if (!await _context.Congregations.AnyAsync(c => c.Id == request.CongregationId)) { return ApiBadRequest<UserResponse>("Congregacao informada nao existe."); } if (await _context.Users.AnyAsync(u => u.Email == email)) { return ApiConflict<UserResponse>("E-mail ja cadastrado."); } DateTime now = DateTime.UtcNow; var user = new User { CongregationId = request.CongregationId, Name = request.Name.Trim(), Email = email, Password = _passwordHasher.Hash(request.Password), Status = request.Status.Trim().ToLowerInvariant(), CreatedAt = now, UpdatedAt = now }; _context.Users.Add(user); await _context.SaveChangesAsync(); return ApiCreated(ToResponse(user), "Usuario criado com sucesso."); } [HttpPut("{id:long}")] public async Task<ActionResult<ApiResponse<UserResponse>>> Update(long id, UpdateUserRequest request) { User? user = await _context.Users.FirstOrDefaultAsync(u => u.Id == id); if (user is null) { return ApiNotFound<UserResponse>("Usuario nao encontrado."); } string email = request.Email.Trim().ToLowerInvariant(); if (!await _context.Congregations.AnyAsync(c => c.Id == request.CongregationId)) { return ApiBadRequest<UserResponse>("Congregacao informada nao existe."); } if (await _context.Users.AnyAsync(u => u.Id != id && u.Email == email)) { return ApiConflict<UserResponse>("E-mail ja cadastrado."); } user.CongregationId = request.CongregationId; user.Name = request.Name.Trim(); user.Email = email; user.Status = request.Status.Trim().ToLowerInvariant(); user.UpdatedAt = DateTime.UtcNow; if (!string.IsNullOrWhiteSpace(request.Password)) { user.Password = _passwordHasher.Hash(request.Password); } await _context.SaveChangesAsync(); return ApiOk(ToResponse(user), "Usuario atualizado com sucesso."); } [HttpDelete("{id:long}")] public async Task<ActionResult<ApiResponse<object>>> Delete(long id) { User? user = await _context.Users.FirstOrDefaultAsync(u => u.Id == id); if (user is null) { return ApiNotFound<object>("Usuario nao encontrado."); } user.Status = "inactive"; user.UpdatedAt = DateTime.UtcNow; await _context.SaveChangesAsync(); return ApiOk<object>(null, "Usuario desativado com sucesso."); } private static UserResponse ToResponse(User user) { return new UserResponse { Id = user.Id, CongregationId = user.CongregationId, Name = user.Name, Email = user.Email, Status = user.Status, LastLoginAt = user.LastLoginAt, CreatedAt = user.CreatedAt, UpdatedAt = user.UpdatedAt }; } } }