UpdateTrackCommand.cs 831 B

1234567891011121314151617181920212223242526272829303132333435
  1. using System.Security;
  2. using RunnersMeet.Server.Domain;
  3. namespace RunnersMeet.Server.Persistence;
  4. public class UpdateTrackCommand : IRequestHandler<TrackUpdate, Track>
  5. {
  6. private readonly IDatabase _database;
  7. public UpdateTrackCommand(IDatabase database)
  8. {
  9. _database = database;
  10. }
  11. public Track Handle(TrackUpdate request)
  12. {
  13. var dbTrack = _database.Tracks.FindById(request.Track.TrackId);
  14. if (dbTrack == null)
  15. {
  16. throw new ArgumentException($"Track with OID {request.Track.TrackId} does not exist", nameof(request.Track));
  17. }
  18. if (dbTrack.Owner.UserId != request.Owner)
  19. {
  20. throw new SecurityException("Trying to modify a track owned by somebody else");
  21. }
  22. dbTrack.DisplayName = request.Track.DisplayName;
  23. _database.Tracks.Update(dbTrack);
  24. return dbTrack;
  25. }
  26. }