public Task Handle(EmergencyCall message, IMessageHandlerContext context)
        {
            var rover = RoverRepository.GetRover(
                Guid.Parse(EncryptionUtils.Instance.Decrypt(message.EncryptedRoverId)));

            rover.Lock();

            RoverRepository.UpdateRover(rover);

            return(Task.CompletedTask);
        }
        public Task Handle(MoveCommand message, IMessageHandlerContext context)
        {
            var rover = RoverRepository.GetRover(
                Guid.Parse(EncryptionUtils.Instance.Decrypt(message.EncryptedRoverId)));

            rover.ApplyMoveCommand(message.EncryptedMoveCommand);

            RoverRepository.UpdateRover(rover);

            return(Task.CompletedTask);
        }
Exemplo n.º 3
0
 public RoverBusiness(IUnitOfWork _unitOfWork)
 {
     unitOfWork      = _unitOfWork;
     roverRepository = new RoverRepository(_unitOfWork);
 }
        public static async Task InitializeTest()
        {
            var contextDbConnectionString =
                ApplicationConfiguration.Instance.GetValue <string>("MarsRoverContext:DatabaseConnectionString");

            var roverDbContextBuilder = new DbContextOptionsBuilder <RoverContext>();

            roverDbContextBuilder.UseSqlServer(contextDbConnectionString);

            var roverRepository = new RoverRepository(
                new RoverContext(roverDbContextBuilder.Options));

            var plateauRepository = new PlateauRepository(
                new RoverContext(roverDbContextBuilder.Options));

            //Test Input:
            //5 5
            //1 2 N
            //LMLMLMLMM
            //3 3 E
            //MMRMMRMRRM
            //Expected Output:
            //1 3 N
            //5 1 E

            //PS:kudretkurt
            //Plato yaratılır.Rover yaratılır. Yaratılan rover ilgili platoya gönderilir(SendToPlateau). Daha sonra bu uzay aracının nasıl hareket edeceği bilgisi şifrelenerek (koskoca nasa mesajı şifreler muhtemelen:)) ilgili queue ya consume edilmesi için gönderilir.

            var plateauId = Guid.NewGuid();
            var plateau   = new Plateau(new Size(5, 5), "FirstPlateau", plateauId);
            await plateauRepository.SavePlateau(plateau);

            var roverId = Guid.NewGuid();
            var rover   = new RoverX(Direction.North, new Point(1, 2), roverId);

            rover.SendToPlateau(plateau);
            await roverRepository.SaveRover(rover);


            var sendOptions = new SendOptions();

            sendOptions.SetDestination(ApplicationConfiguration.Instance.GetValue <string>("MarsRoverContext:EndpointName"));

            //await _nasaEndpointInstance.Send(new MoveCommand()
            //{
            //    EncryptedMoveCommand = EncryptionUtils.Instance.Encrypt("LMLMLMLMM"),
            //    EncryptedRoverId = EncryptionUtils.Instance.Encrypt(roverId.ToString())
            //}, sendOptions);


            roverId = Guid.NewGuid();
            rover   = new RoverX(Direction.East, new Point(3, 3), roverId);
            rover.SendToPlateau(plateau);
            await roverRepository.SaveRover(rover);

            sendOptions = new SendOptions();
            sendOptions.SetDestination(ApplicationConfiguration.Instance.GetValue <string>("MarsRoverContext:EndpointName"));

            await _nasaEndpointInstance.Send(new MoveCommand()
            {
                EncryptedMoveCommand = EncryptionUtils.Instance.Encrypt("MMRMMRMRRM"),
                EncryptedRoverId     = EncryptionUtils.Instance.Encrypt(roverId.ToString())
            }, sendOptions);
        }