Пример #1
0
        public ActionResult <EsiCharacterDto> UpdateEsiCharacter(string mainToken, EsiCharacterDto dto, int sigId)
        {
            var res = _characterService.UpdateEsiCharacter(mainToken, dto, sigId);

            if (res == null)
            {
                return(NotFound(res));
            }
            return(Ok(_mapper.Map <EsiCharacterDto>(res)));
        }
Пример #2
0
        public EsiCharacter UpdateEsiCharacter(string mainToken, EsiCharacterDto dto, int sigId)
        {
            var esi = _context.EsiCharacters.FirstOrDefault(x => x.Id == dto.Id && x.MainCharacter.AccessToken == mainToken);

            if (esi == null)
            {
                return(null);
            }
            if (esi.CurrentSystemId != null && esi.PassedLessThan(seconds: 11) && sigId >= 0) // sigId = -1 means angular client didn't notice a change in location
            {
                if (esi.CurrentSystemId != dto.CurrentSystemId)
                {
                    var maskId       = esi.MainCharacter.MaskType == MaskType.Alliance ? esi.MainCharacter.Pilot.Corporation.Alliance.MaskId : esi.MainCharacter.Pilot.Corporation.MaskId;
                    var destoSystem  = _solarSystemService.GetSystemById(dto.CurrentSystemId.GetValueOrDefault());
                    var originSystem = _solarSystemService.GetSystemById(esi.CurrentSystemId.Value);
                    var connection   = _stargateService.GetStargateByOriginAndDestoId(esi.CurrentSystemId.GetValueOrDefault(), dto.CurrentSystemId.GetValueOrDefault());
                    if (connection == null)
                    {
                        var wormhole = _signatureService.GetBySignatureId(sigId);
                        if (wormhole == null) // sigId = 0 means it's an unmarked wormhole
                        {
                            wormhole = new Signature
                            {
                                SystemId       = esi.CurrentSystemId.Value,
                                SignatureId    = "???",
                                ExpiryDate     = DateTime.UtcNow.AddDays(1),
                                Name           = "",
                                SignatureType  = SignatureType.Wormhole,
                                MaskId         = maskId,
                                WormholeTypeId = _signatureService.GetByTypeName("????").Id
                            };
                            _signatureService.Insert(wormhole, commit: true);
                        }
                        wormhole.Jumps.Add(new Jump
                        {
                            PilotId = esi.Pilot.Id,
                            ShipId  = dto.CurrentShipTypeId.GetValueOrDefault()
                        });
                        var destoWormhole = wormhole.Destination;
                        if (destoWormhole == null)
                        {
                            destoWormhole = new Signature
                            {
                                SystemId       = dto.CurrentSystemId.Value,
                                SignatureId    = "???",
                                ExpiryDate     = wormhole.ExpiryDate,
                                Name           = "",
                                SignatureType  = SignatureType.Wormhole,
                                MaskId         = maskId,
                                WormholeTypeId = _signatureService.GetByTypeName("K162").Id
                            };
                            _signatureService.Insert(destoWormhole, commit: true);
                            destoWormhole.DestinationId = wormhole.Id;
                            wormhole.DestinationId      = destoWormhole.Id;
                            _signatureService.Update(wormhole, commit: true);
                        }
                        _routeService.AddAdjacency(esi.CurrentSystemId.Value, dto.CurrentSystemId.Value, maskId,
                                                   destoSystem.Class > 0 || originSystem.Class > 0 ? 10 :                // J Space Connection = 10
                                                   destoSystem.Security <= 0.45 || originSystem.Security <= 0.45 ? 100 : // Null/Low sec connection = 100
                                                   1);                                                                   // Hisec to Hisec = 1
                        //var wormhole = _signatureService.GetOrAddWormholeByOriginAndDestoId(esi.CurrentSystemId.GetValueOrDefault(), dto.CurrentSystemId.GetValueOrDefault(), maskId, sigId);
                        //wormhole.Wormhole.Jumps.Add(new Jump
                        //{
                        //    EsiCharacterId = esi.Id,
                        //    ShipId = dto.CurrentShipTypeId.GetValueOrDefault()
                        //});
                    }
                    else
                    {
                        connection.StargateJumps.Add(new StargateJump
                        {
                            PilotId    = esi.Pilot.Id,
                            ShipId     = dto.CurrentShipTypeId.GetValueOrDefault(),
                            StargateId = connection.Id,
                            MaskId     = maskId
                        });
                    }
                }
            }
            if (dto.CurrentShipTypeId.HasValue)
            {
                _itemTypeService.GetItemTypeById(dto.CurrentShipTypeId.Value);
                esi.CurrentShipTypeId = dto.CurrentShipTypeId;
            }
            if (dto.CurrentSystemId.HasValue)
            {
                _solarSystemService.GetSystemById(dto.CurrentSystemId.Value);
                esi.CurrentSystemId = dto.CurrentSystemId;
                _context.Update(esi);
            }
            esi.CurrentShipName = dto.CurrentShipName;
            _context.SaveChanges();
            return(esi);
        }