bug fixes

This commit is contained in:
Michele Scandura 2020-12-08 16:34:02 +00:00
parent 2a796509c8
commit 1759f7cd8e
12 changed files with 151 additions and 48 deletions

View file

@ -0,0 +1,43 @@
using MediatR;
using Sledgemapper.Api.Data;
using Sledgemapper.Api.Commands;
using Sledgemapper.Api.Notifications;
using Sledgemapper.Shared.Entities;
using System.Linq;
using System.Text.Json;
using System.Threading;
using System.Threading.Tasks;
namespace Sledgemapper.Api.Handlers
{
public class DeleteNoteCommandHandler : IRequestHandler<DeleteNoteCommand, bool>
{
private readonly MyDbContext _dbcontext;
private readonly IMediator _mediator;
public DeleteNoteCommandHandler(IMediator mediator, MyDbContext dbcontext) { _dbcontext = dbcontext; _mediator = mediator; }
public async Task<bool> Handle(DeleteNoteCommand notification, CancellationToken cancellationToken)
{
var jsonString = JsonSerializer.Serialize<Note>(notification.Note);
var session = _dbcontext.Sessions.First(m => m.SessionName == notification.SessionName);
_dbcontext.MapLogs.Add(new Sledgemapper.Api.Models.MapLog
{
Operation = "D",
SessionId = session.SessionId,
Type = "N",
Timestamp = notification.Timestamp,
Object = jsonString,
UserId = notification.UserId
});
await _dbcontext.SaveChangesAsync();
await _mediator.Publish(new DeleteNoteNotification(session, notification.Note, notification.UserId));
return true;
}
}
}

View file

@ -53,6 +53,10 @@ namespace Sledgemapper.Api.Commands
var overlay = JsonSerializer.Deserialize<Overlay>(mapUpdate.Object);
mapSession.NewOverlay(overlay, overlay.ID);
break;
case "N":
var note = JsonSerializer.Deserialize<Note>(mapUpdate.Object);
mapSession.NewNote(note);
break;
}
@ -73,6 +77,10 @@ namespace Sledgemapper.Api.Commands
var overlay = JsonSerializer.Deserialize<Overlay>(mapUpdate.Object);
mapSession.DeleteOverlay(overlay);
break;
case "N":
var note = JsonSerializer.Deserialize<Note>(mapUpdate.Object);
mapSession.DeleteNote(note);
break;
}
}
}

View file

@ -0,0 +1,22 @@
using MediatR;
using Microsoft.AspNetCore.SignalR;
using Sledgemapper.Clients;
using System.Threading;
using System.Threading.Tasks;
using Sledgemapper.Api.Hubs;
using Sledgemapper.Api.Notifications;
namespace Sledgemapper.Api.Handlers
{
public class SendDeleteNoteMessage : INotificationHandler<DeleteNoteNotification>
{
private readonly IHubContext<SledgemapperHub, ISledgemapperClient> _hub;
public SendDeleteNoteMessage(IHubContext<SledgemapperHub, ISledgemapperClient> hub) => _hub = hub;
public async Task Handle(DeleteNoteNotification notification, CancellationToken cancellationToken)
{
await _hub.Clients.Groups(notification.Session.SessionName).DeleteNote(notification.Note);
}
}
}