Пример #1
0
        public List <SignatureDto> GetPossibleJumpSignatures(string mainToken, int originId, int destoId)
        {
            var res              = new List <SignatureDto>();
            var main             = _characterService.GetMainCharacterByToken(mainToken);
            var maskId           = main.MaskType == MaskType.Alliance && main.Pilot.Corporation.AllianceId != null ? main.Pilot.Corporation.Alliance.MaskId : main.Pilot.Corporation.MaskId;
            var originSystem     = _solarSystemService.GetSystemById(originId);
            var destoSystem      = _solarSystemService.GetSystemById(destoId);
            var originSigs       = originSystem.Signatures.Where(x => x.MaskId == maskId).Select(x => x).ToList();
            var directConnection = originSigs.FirstOrDefault(x => x.Destination?.SystemId == destoId);

            if (directConnection != null)
            {
                res.Add(_mapper.Map <SignatureDto>(directConnection));
                return(res);
            }
            var destoTypeMatchSigs = originSigs.Where(x => x.DestinationId == null && x.WormholeType?.LeadsToId == destoSystem.SystemTypeId).ToList();

            if (destoTypeMatchSigs.Count > 0)
            {
                res.AddRange(_mapper.Map <List <SignatureDto> >(destoTypeMatchSigs));
                return(res);
            }
            var originWormholes = originSigs.Where(x => x.SignatureType == SignatureType.Wormhole && x.DestinationId == null).ToList();

            if (originWormholes.Count == 0)
            {
                originWormholes = originSigs.Where(x => x.SignatureType == SignatureType.Unknown && x.DestinationId == null).ToList();
            }
            res.AddRange(_mapper.Map <List <SignatureDto> >(originWormholes));
            return(res);
        }
Пример #2
0
        public SolarSystemDto GetSolarSystemById(string mainToken, int systemId)
        {
            var main   = _characterService.GetMainCharacterByToken(mainToken);
            var maskId = main.MaskType == MaskType.Alliance && main.Pilot.Corporation.AllianceId != null ? main.Pilot.Corporation.Alliance.MaskId : main.Pilot.Corporation.MaskId;
            var system = _solarSystemService.GetSystemById(systemId);
            var res    = _mapper.Map <SolarSystemDto>(system);

            res.Signatures = _mapper.Map <List <SignatureDto> >(system.Signatures.Where(x => x.MaskId == maskId));
            res.Pilots     = _mapper.Map <List <ActivePilotDto> >(system.Pilots.Where(x => x.MainCharacter.MaskType == MaskType.Corp ? (x.MainCharacter.Pilot.Corporation.MaskId == maskId) :
                                                                                      x.MainCharacter.Pilot.Corporation.AllianceId != null && x.MainCharacter.Pilot.Corporation.Alliance.MaskId == maskId));
            res.Notes      = _mapper.Map <List <SolarSystemNoteDto> >(system.Notes.Where(x => x.MaskId == maskId));
            res.Tags       = _mapper.Map <List <SolarSystemTagDto> >(system.Tags.Where(x => x.MaskId == maskId));
            res.Structures = _mapper.Map <List <SolarSystemStructureDto> >(system.Structures.Where(x => x.MaskId == maskId));
            res.IsFavorite = main.FavoriteSystems.Any(x => x.SolarSystemId == systemId);
            res.Dscans     = system.Dscans.Where(x => x.MaskId == maskId).OrderByDescending(x => x.CreationDate).Select(x => new DscanDto
            {
                Id              = x.Id,
                SolarSystemId   = x.SolarSystemId,
                DscanShipGroups = x.DscanShips.GroupBy(s => s.ShipType.ItemGroup.Name).Select(s => new DscanShipGroupDto
                {
                    GroupName  = s.Key,
                    GroupCount = s.Count(),
                    ShipTypes  = s.GroupBy(r => r.ShipType.Name).ToDictionary(r => r.Key, r => r.Count())
                }).ToList(),
                CreationDate = x.CreationDate
            }).ToList();
            res.Dscans.ForEach(d => d.DscanShipGroups = d.DscanShipGroups.OrderByDescending(x => x.GroupCount).ToList());

            return(res);
        }
Пример #3
0
        public MapDto GetMapForRootId(string mainToken, int systemId, string customName, int maxGateLevel)
        {
            var main   = _characterService.GetMainCharacterByToken(mainToken);
            var maskId = main.MaskType == MaskType.Alliance && main.Pilot.Corporation.AllianceId != null ? main.Pilot.Corporation.Alliance.MaskId : main.Pilot.Corporation.MaskId;
            var system = _solarSystemService.GetSystemById(systemId);

            var res = Map(system, customName, maskId, maxGateLevel);

            return(res);
        }