예제 #1
0
        public async Task CreateMap(MapDto mapDto)
        {
            if (mapDto == null)
            {
                throw new ArgumentNullException(nameof(mapDto));
            }

            var map = new Data.Legacy.Models.Maps
            {
                MapId    = Guid.NewGuid(),
                GameType = mapDto.GameType,
                MapName  = mapDto.MapName,
                MapFiles = mapDto.MapFiles.Select(mf => new MapFiles
                {
                    MapFileId = Guid.NewGuid(),
                    FileName  = mf.FileName
                }).ToList()
            };

            _legacyContext.Maps.Add(map);
            await _legacyContext.SaveChangesAsync();
        }
예제 #2
0
        public static MapDto ToDto(this Data.Legacy.Models.Maps map, string baseUrl)
        {
            double totalLikes        = map.MapVotes.Count(mv => mv.Like);
            double totalDislikes     = map.MapVotes.Count(mv => !mv.Like);
            var    totalVotes        = map.MapVotes.Count;
            double likePercentage    = 0;
            double dislikePercentage = 0;

            if (totalVotes > 0)
            {
                likePercentage    = totalLikes / totalVotes * 100;
                dislikePercentage = totalDislikes / totalVotes * 100;
            }

            var mapDto = new MapDto
            {
                MapId    = map.MapId,
                GameType = map.GameType,
                MapName  = map.MapName,
                MapFiles = map.MapFiles.Select(mf => new MapFileDto
                {
                    FileName = mf.FileName,
                    FileUrl  = $"{baseUrl}/redirect/{map.GameType.ToRedirectShortName()}/usermaps/{map.MapName}/{mf.FileName}"
                }).ToList(),
                MapVotes = map.MapVotes.Select(mv => new MapVoteDto
                {
                    Like = mv.Like
                }).ToList(),
                LikePercentage    = likePercentage,
                DislikePercentage = dislikePercentage,
                TotalLikes        = totalLikes,
                TotalDislikes     = totalDislikes,
                TotalVotes        = totalVotes
            };

            return(mapDto);
        }