Пример #1
0
        public async Task <UserDto> Handle(CreateUserCommand request, CancellationToken cancellationToken)
        {
            var input = request.Data.Attributes;

            var user = new Users_()
            {
                name     = input.name,
                username = input.username,
                email    = input.email,
                password = input.password,
                address  = input.address
            };

            _context.UsersData.Add(user);
            await _context.SaveChangesAsync();

            var user1  = _context.UsersData.First(x => x.username == request.Data.Attributes.username);
            var target = new Target()
            {
                Id = user.id, Email_destination = user.email
            };

            var command = new NotifInput()
            {
                Title   = "rabbit - test",
                Message = "this is only testing",
                Type    = "email",
                From    = 123456,
                Targets = new List <Target>()
                {
                    target
                }
            };

            var attributes = new Attribute <NotifInput>()
            {
                Attributes = command
            };

            var httpContent = new CommandDTO <NotifInput>()
            {
                Data = attributes
            };

            var jsonObject = JsonConvert.SerializeObject(httpContent);
            var content    = new StringContent(jsonObject, Encoding.UTF8, "application/json");

            await client.PostAsync("http://localhost:5800/api/notification", content);

            return(new UserDto
            {
                message = "Success add a user data",
                success = true
            });
        }
        public async Task <UserDto> Handle(CreateUserCommand request, CancellationToken cancellationToken)
        {
            var user = new Users_()
            {
                name     = request.Data.Attributes.name,
                username = request.Data.Attributes.username,
                email    = request.Data.Attributes.email,
                password = request.Data.Attributes.password,
                address  = request.Data.Attributes.address
            };

            _context.UsersData.Add(user);
            await _context.SaveChangesAsync(cancellationToken);

            var user1  = _context.UsersData.First(x => x.username == request.Data.Attributes.username);
            var target = new Target()
            {
                Id = user.id, Email_destination = user.email
            };
            var client = new HttpClient();

            var command = new NotifInput()
            {
                Title   = "rabbit-test",
                Message = "this is only testing",
                Type    = "email",
                From    = 98780,
                Target  = new List <Target>()
                {
                    target
                }
            };

            var attributes = new Attribute <NotifInput>()
            {
                Attributes = command
            };

            var httpContent = new CommandDTO <NotifInput>()
            {
                Data = attributes
            };

            var jsonObject = JsonConvert.SerializeObject(httpContent);
            //var content = new StringContent(jsonObject, Encoding.UTF8, "application/json");
            //await client.PostAsync("http://localhost:5800/api/notification", content);



            var factory = new ConnectionFactory()
            {
                HostName = "localhost"
            };

            using (var connection = factory.CreateConnection())
                using (var channel = connection.CreateModel())
                {
                    channel.ExchangeDeclare(exchange: "halopakpos", "fanout");

                    channel.QueueDeclare(queue: "pakpos", durable: true, exclusive: false, autoDelete: false, arguments: null);
                    channel.QueueBind("pakpos", "halopakpos", routingKey: "");

                    var body       = Encoding.UTF8.GetBytes(jsonObject);
                    var properties = channel.CreateBasicProperties();
                    properties.Persistent = true;

                    channel.BasicPublish(exchange: "halopakpos",
                                         routingKey: "",
                                         basicProperties: null,
                                         body: body);

                    Console.WriteLine("Message has sent");
                }

            return(new UserDto
            {
                message = "a user has been added.",
                success = true
            });
        }