🐛 Fix presence activity controller
This commit is contained in:
		@@ -1,6 +1,7 @@
 | 
			
		||||
using DysonNetwork.Shared.Models;
 | 
			
		||||
using Microsoft.AspNetCore.Authorization;
 | 
			
		||||
using Microsoft.AspNetCore.Mvc;
 | 
			
		||||
using Microsoft.EntityFrameworkCore;
 | 
			
		||||
 | 
			
		||||
namespace DysonNetwork.Pass.Account;
 | 
			
		||||
 | 
			
		||||
@@ -10,8 +11,8 @@ namespace DysonNetwork.Pass.Account;
 | 
			
		||||
/// </summary>
 | 
			
		||||
[ApiController]
 | 
			
		||||
[Route("/api/activities")]
 | 
			
		||||
[Authorize]
 | 
			
		||||
public class PresenceActivityController(AppDatabase db, AccountEventService service) : ControllerBase
 | 
			
		||||
public class PresenceActivityController(AppDatabase db, AccountEventService service)
 | 
			
		||||
    : ControllerBase
 | 
			
		||||
{
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    /// Retrieves all active (non-expired) presence activities for the authenticated user.
 | 
			
		||||
@@ -22,7 +23,8 @@ public class PresenceActivityController(AppDatabase db, AccountEventService serv
 | 
			
		||||
    [ProducesResponseType(StatusCodes.Status401Unauthorized)]
 | 
			
		||||
    public async Task<ActionResult<List<SnPresenceActivity>>> GetActivities()
 | 
			
		||||
    {
 | 
			
		||||
        if (HttpContext.Items["CurrentUser"] is not SnAccount currentUser) return Unauthorized();
 | 
			
		||||
        if (HttpContext.Items["CurrentUser"] is not SnAccount currentUser)
 | 
			
		||||
            return Unauthorized();
 | 
			
		||||
        var activities = await service.GetActiveActivities(currentUser.Id);
 | 
			
		||||
        return Ok(activities);
 | 
			
		||||
    }
 | 
			
		||||
@@ -30,14 +32,20 @@ public class PresenceActivityController(AppDatabase db, AccountEventService serv
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    /// Retrieves active presence activities for any user account (admin/debugging endpoint).
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    /// <param name="accountId">The account ID to fetch activities for</param>
 | 
			
		||||
    /// <returns>List of active presence activities</returns>
 | 
			
		||||
    [HttpGet("{accountId:guid}")]
 | 
			
		||||
    [HttpGet("{identifier}")]
 | 
			
		||||
    [ProducesResponseType<List<SnPresenceActivity>>(StatusCodes.Status200OK)]
 | 
			
		||||
    [ProducesResponseType(StatusCodes.Status401Unauthorized)]
 | 
			
		||||
    public async Task<ActionResult<List<SnPresenceActivity>>> GetActivitiesByAccountId(Guid accountId)
 | 
			
		||||
    public async Task<ActionResult<List<SnPresenceActivity>>> GetActivitiesByAccountId(
 | 
			
		||||
        string identifier
 | 
			
		||||
    )
 | 
			
		||||
    {
 | 
			
		||||
        var activities = await service.GetActiveActivities(accountId);
 | 
			
		||||
        var account = Guid.TryParse(identifier, out var identifierGuid)
 | 
			
		||||
            ? await db.Accounts.FirstOrDefaultAsync(a => a.Id == identifierGuid)
 | 
			
		||||
            : await db.Accounts.FirstOrDefaultAsync(a => a.Name == identifier);
 | 
			
		||||
        if (account is null)
 | 
			
		||||
            return NotFound();
 | 
			
		||||
 | 
			
		||||
        var activities = await service.GetActiveActivities(account.Id);
 | 
			
		||||
        return Ok(activities);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -54,7 +62,8 @@ public class PresenceActivityController(AppDatabase db, AccountEventService serv
 | 
			
		||||
        [FromBody] SetActivityRequest request
 | 
			
		||||
    )
 | 
			
		||||
    {
 | 
			
		||||
        if (HttpContext.Items["CurrentUser"] is not SnAccount currentUser) return Unauthorized();
 | 
			
		||||
        if (HttpContext.Items["CurrentUser"] is not SnAccount currentUser)
 | 
			
		||||
            return Unauthorized();
 | 
			
		||||
 | 
			
		||||
        var activity = new SnPresenceActivity
 | 
			
		||||
        {
 | 
			
		||||
@@ -89,7 +98,8 @@ public class PresenceActivityController(AppDatabase db, AccountEventService serv
 | 
			
		||||
        [FromBody] UpdateActivityRequest request
 | 
			
		||||
    )
 | 
			
		||||
    {
 | 
			
		||||
        if (HttpContext.Items["CurrentUser"] is not SnAccount currentUser) return Unauthorized();
 | 
			
		||||
        if (HttpContext.Items["CurrentUser"] is not SnAccount currentUser)
 | 
			
		||||
            return Unauthorized();
 | 
			
		||||
 | 
			
		||||
        var type = request.Type;
 | 
			
		||||
        var title = request.Title;
 | 
			
		||||
@@ -106,14 +116,21 @@ public class PresenceActivityController(AppDatabase db, AccountEventService serv
 | 
			
		||||
                currentUser.Id,
 | 
			
		||||
                activity =>
 | 
			
		||||
                {
 | 
			
		||||
                    if (type.HasValue) activity.Type = type.Value;
 | 
			
		||||
                    if (title != null) activity.Title = title;
 | 
			
		||||
                    if (subtitle != null) activity.Subtitle = subtitle;
 | 
			
		||||
                    if (caption != null) activity.Caption = caption;
 | 
			
		||||
                    if (requestManualId != null) activity.ManualId = requestManualId;
 | 
			
		||||
                    if (requestMeta != null) activity.Meta = requestMeta;
 | 
			
		||||
                    if (type.HasValue)
 | 
			
		||||
                        activity.Type = type.Value;
 | 
			
		||||
                    if (title != null)
 | 
			
		||||
                        activity.Title = title;
 | 
			
		||||
                    if (subtitle != null)
 | 
			
		||||
                        activity.Subtitle = subtitle;
 | 
			
		||||
                    if (caption != null)
 | 
			
		||||
                        activity.Caption = caption;
 | 
			
		||||
                    if (requestManualId != null)
 | 
			
		||||
                        activity.ManualId = requestManualId;
 | 
			
		||||
                    if (requestMeta != null)
 | 
			
		||||
                        activity.Meta = requestMeta;
 | 
			
		||||
                },
 | 
			
		||||
                leaseMinutes);
 | 
			
		||||
                leaseMinutes
 | 
			
		||||
            );
 | 
			
		||||
 | 
			
		||||
            if (result == null)
 | 
			
		||||
                return NotFound();
 | 
			
		||||
@@ -126,14 +143,21 @@ public class PresenceActivityController(AppDatabase db, AccountEventService serv
 | 
			
		||||
                activityGuid,
 | 
			
		||||
                activity =>
 | 
			
		||||
                {
 | 
			
		||||
                    if (type.HasValue) activity.Type = type.Value;
 | 
			
		||||
                    if (title != null) activity.Title = title;
 | 
			
		||||
                    if (subtitle != null) activity.Subtitle = subtitle;
 | 
			
		||||
                    if (caption != null) activity.Caption = caption;
 | 
			
		||||
                    if (requestManualId != null) activity.ManualId = requestManualId;
 | 
			
		||||
                    if (requestMeta != null) activity.Meta = requestMeta;
 | 
			
		||||
                    if (type.HasValue)
 | 
			
		||||
                        activity.Type = type.Value;
 | 
			
		||||
                    if (title != null)
 | 
			
		||||
                        activity.Title = title;
 | 
			
		||||
                    if (subtitle != null)
 | 
			
		||||
                        activity.Subtitle = subtitle;
 | 
			
		||||
                    if (caption != null)
 | 
			
		||||
                        activity.Caption = caption;
 | 
			
		||||
                    if (requestManualId != null)
 | 
			
		||||
                        activity.ManualId = requestManualId;
 | 
			
		||||
                    if (requestMeta != null)
 | 
			
		||||
                        activity.Meta = requestMeta;
 | 
			
		||||
                },
 | 
			
		||||
                leaseMinutes);
 | 
			
		||||
                leaseMinutes
 | 
			
		||||
            );
 | 
			
		||||
 | 
			
		||||
            return Ok(result);
 | 
			
		||||
        }
 | 
			
		||||
@@ -157,9 +181,11 @@ public class PresenceActivityController(AppDatabase db, AccountEventService serv
 | 
			
		||||
    [ProducesResponseType(StatusCodes.Status400BadRequest)]
 | 
			
		||||
    public async Task<IActionResult> DeleteActivityById(
 | 
			
		||||
        [FromQuery] string? id,
 | 
			
		||||
        [FromQuery] string? manualId)
 | 
			
		||||
        [FromQuery] string? manualId
 | 
			
		||||
    )
 | 
			
		||||
    {
 | 
			
		||||
        if (HttpContext.Items["CurrentUser"] is not SnAccount currentUser) return Unauthorized();
 | 
			
		||||
        if (HttpContext.Items["CurrentUser"] is not SnAccount currentUser)
 | 
			
		||||
            return Unauthorized();
 | 
			
		||||
 | 
			
		||||
        if (!string.IsNullOrWhiteSpace(manualId))
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user