コード例 #1
0
        public async Task <AddObjectCommandResult> Execute(AddObjectCommandArgs args)
        {
            var actionExecutor = await _userManager.FindByIdAsync(args.ActionExecutorId);

            if (actionExecutor == null)
            {
                throw new ArgumentException("User not found", nameof(actionExecutor));
            }

            var map = await _repository.AsQueryable <Map>()
                      .NotRemoved()
                      .WithId(args.MapId)
                      .WithAccessOf(actionExecutor.Id)
                      .LoadAggregate()
                      .FirstOrDefaultAsync();

            if (map == null)
            {
                throw new ServiceException("Map not found");
            }

            var geometry = _geometryConverter.FromWktString(args.WktString);

            var mapObject = new MapObject(map, args.Title, args.Description, geometry, args.Tags);

            map.Add(mapObject);

            _repository.Update(map);
            await _repository.SaveAsync();

            return(new AddObjectCommandResult
            {
                ObjectId = mapObject.Id
            });
        }
コード例 #2
0
        public async Task Execute(UpdateObjectCommandArgs args)
        {
            var actionExecutor = await _userManager.FindByIdAsync(args.ActionExecutorId);

            if (actionExecutor == null)
            {
                throw new ArgumentException("User not found", nameof(actionExecutor));
            }

            var map = await _repository.AsQueryable <Map>()
                      .NotRemoved()
                      .WithId(args.MapId)
                      .WithAccessOf(actionExecutor.Id)
                      .LoadAggregate()
                      .FirstOrDefaultAsync();

            if (map == null)
            {
                throw new ServiceException("Map not found");
            }

            var mapObject = map.ObjectsList
                            .FirstOrDefault(x => x.Id == args.ObjectId);

            if (mapObject == null)
            {
                throw new ServiceException("Object not found");
            }

            var geometry = _geometryConverter.FromWktString(args.WktString);

            mapObject.Update(args.Title, args.Description, geometry);
            mapObject.ReplaceTags(args.Tags);

            _repository.Update(mapObject);

            await _repository.SaveAsync();
        }