Example #1
0
        public async Task <ActionResult <MapSummaryResponse> > PutUpdateMapAsync(
            [FromServices] NaheulbookExecutionContext executionContext,
            [FromRoute] int mapId,
            [FromBody] CreateMapRequest request
            )
        {
            var map = await _mapService.UpdateMapAsync(executionContext, mapId, request);

            return(_mapper.Map <MapSummaryResponse>(map));
        }
Example #2
0
        public IActionResult Post([FromBody] CreateMapRequest newMap)
        {
            Player player      = (Player)this.HttpContext.Items["Player"];
            Map    map         = new Map(newMap.MapLayout, newMap.Name, player);
            bool   addedToRepo = mapRepo.Add(map);

            if (addedToRepo)
            {
                MapResource mapResource = new MapResource {
                    Id = map.Id
                };
                return(new ObjectResult(mapResource));
            }
            return(new BadRequestResult());
        }
Example #3
0
        public async Task <ActionResult <MapResponse> > PostCreateMapAsync(
            [FromServices] NaheulbookExecutionContext executionContext,
            [ModelBinder(BinderType = typeof(JsonModelBinder), Name = "request")]
            CreateMapRequest request,
            [FromForm(Name = "image")] IFormFile image
            )
        {
            if (!image.ContentType.StartsWith("image/"))
            {
                return(BadRequest());
            }

            var imageStream = image.OpenReadStream();
            var map         = await _mapService.CreateMapAsync(executionContext, request, imageStream);

            return(_mapper.Map <MapResponse>(map));
        }
Example #4
0
        public async Task <Map> CreateMapAsync(NaheulbookExecutionContext executionContext, CreateMapRequest request, Stream imageStream)
        {
            await _authorizationUtil.EnsureAdminAccessAsync(executionContext);

            using (var uow = _unitOfWorkFactory.CreateUnitOfWork())
            {
                var mapData = new MapData
                {
                    IsGm         = request.Data.IsGm,
                    PixelPerUnit = request.Data.PixelPerUnit,
                    UnitName     = request.Data.UnitName,
                    Attribution  = request.Data.Attribution
                                   .Select(x => new MapData.MapAttribution {
                        Name = x.Name, Url = x.Url
                    })
                                   .ToList()
                };
                var map = new Map
                {
                    Name      = request.Name,
                    Data      = _jsonUtil.SerializeNonNull(mapData),
                    ImageData = "{}"
                };

                uow.Maps.Add(map);
                await uow.SaveChangesAsync();

                map.Data = _jsonUtil.SerializeNonNull(mapData);

                try
                {
                    var mapImageData = _mapImageUtil.SplitMapImage(imageStream, map.Id);
                    map.ImageData = _jsonUtil.SerializeNonNull(mapImageData);
                }
                catch (Exception)
                {
                    uow.Maps.Remove(map);
                }

                await uow.SaveChangesAsync();

                return(map);
            }
        }
Example #5
0
        public async Task <Map> UpdateMapAsync(NaheulbookExecutionContext executionContext, int mapId, CreateMapRequest request)
        {
            await _authorizationUtil.EnsureAdminAccessAsync(executionContext);

            using var uow = _unitOfWorkFactory.CreateUnitOfWork();

            var map = await uow.Maps.GetAsync(mapId);

            if (map == null)
            {
                throw new MapNotFoundException(mapId);
            }

            map.Name = request.Name;
            map.Data = _jsonUtil.SerializeNonNull(request.Data);

            await uow.SaveChangesAsync();

            return(map);
        }
Example #6
0
        public async Task <ActionResult> CreateMap([FromBody] CreateMapRequest requestBody)
        {
            var result = await mapsService.CreateGalleryMap(requestBody.Map);

            return(CreatedAtAction(nameof(GetMapByShortName), new { shortName = requestBody.Map.ShortName }, $"Created map {requestBody.Map.ShortName}"));
        }