| 1234567891011121314151617181920212223242526272829303132333435 |
- using System.Security;
- using RunnersMeet.Server.Domain;
- namespace RunnersMeet.Server.Persistence;
- public class UpdateTrackCommand : IRequestHandler<TrackUpdate, Track>
- {
- private readonly IDatabase _database;
- public UpdateTrackCommand(IDatabase database)
- {
- _database = database;
- }
- public Track Handle(TrackUpdate request)
- {
- var dbTrack = _database.Tracks.FindById(request.Track.TrackId);
- if (dbTrack == null)
- {
- throw new ArgumentException($"Track with OID {request.Track.TrackId} does not exist", nameof(request.Track));
- }
- if (dbTrack.Owner.UserId != request.Owner)
- {
- throw new SecurityException("Trying to modify a track owned by somebody else");
- }
- dbTrack.DisplayName = request.Track.DisplayName;
- _database.Tracks.Update(dbTrack);
- return dbTrack;
- }
- }
|