public async Task <AddAttachmentCommandResult> Execute(AddAttachmentCommandArgs args)
        {
            var mapObject = await _repository.AsQueryable <MapObject>()
                            .WithId(args.ObjectId)
                            .OfMap(args.MapId, args.ActionExecutorId)
                            .WithAttachments()
                            .FirstOrDefaultAsync();

            if (mapObject == null)
            {
                throw new ArgumentNullException(nameof(mapObject), "Map object not found");
            }

            var fileReference = _fileReferencesFactory.GenerateMapObjectAttachment(args.SourceFileName, args.MimeType);

            mapObject.AddAttachment(fileReference);
            _repository.Create(fileReference);

            var uploadUrl = _fileStorageClient.GenerateUploadPreSignedUrl(fileReference.ObjectKey, fileReference.MimeType);

            await _repository.SaveAsync();

            return(new AddAttachmentCommandResult
            {
                Id = fileReference.Id,
                UploadUrl = uploadUrl
            });
        }