Init Commit
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using MotoresArgentinosV2.Core.DTOs;
|
||||
using MotoresArgentinosV2.Core.Entities;
|
||||
using MotoresArgentinosV2.Infrastructure.Data;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using System.Security.Claims;
|
||||
|
||||
namespace MotoresArgentinosV2.API.Controllers;
|
||||
|
||||
[Authorize]
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class ProfileController : ControllerBase
|
||||
{
|
||||
private readonly MotoresV2DbContext _context;
|
||||
|
||||
public ProfileController(MotoresV2DbContext context)
|
||||
{
|
||||
_context = context;
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public async Task<IActionResult> GetProfile()
|
||||
{
|
||||
var userId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier)?.Value ?? "0");
|
||||
var user = await _context.Users
|
||||
.Where(u => u.UserID == userId)
|
||||
.Select(u => new
|
||||
{
|
||||
u.UserID,
|
||||
u.UserName,
|
||||
u.Email,
|
||||
u.FirstName,
|
||||
u.LastName,
|
||||
u.PhoneNumber,
|
||||
u.UserType,
|
||||
u.CreatedAt,
|
||||
u.IsEmailVerified
|
||||
})
|
||||
.FirstOrDefaultAsync();
|
||||
|
||||
if (user == null) return NotFound();
|
||||
return Ok(user);
|
||||
}
|
||||
|
||||
[HttpPut]
|
||||
public async Task<IActionResult> UpdateProfile([FromBody] ProfileUpdateDto dto)
|
||||
{
|
||||
var userId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier)?.Value ?? "0");
|
||||
var user = await _context.Users.FindAsync(userId);
|
||||
|
||||
if (user == null) return NotFound();
|
||||
|
||||
user.FirstName = dto.FirstName;
|
||||
user.LastName = dto.LastName;
|
||||
user.PhoneNumber = dto.PhoneNumber;
|
||||
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
// Audit Log
|
||||
_context.AuditLogs.Add(new AuditLog
|
||||
{
|
||||
Action = "PROFILE_UPDATED",
|
||||
Entity = "User",
|
||||
EntityID = userId,
|
||||
UserID = userId,
|
||||
Details = "Usuario actualizó su perfil personal."
|
||||
});
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
return Ok(new { message = "Perfil actualizado con éxito." });
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user