Vasilek
141 строка · 6.2 Кб
1using Azure.Messaging.ServiceBus;
2using Newtonsoft.Json;
3using System.Text;
4using Vasilek.MessageBus;
5using Vasilek.Services.OrderAPI.Messages;
6using Vasilek.Services.OrderAPI.Models;
7using Vasilek.Services.OrderAPI.Repository;
8
9namespace Vasilek.Services.OrderAPI.Messaging
10{
11public class AzureServiceBusConsumer/* : IAzureServiceBusConsumer*/
12{
13//private readonly string serviceBusConnectionString;
14//private readonly string subscriptionCheckOut;
15//private readonly string checkoutMessageTopic;
16//private readonly string orderPaymentProcessTopic;
17//private readonly string orderUpdatePaymentResultTopic;
18
19//private readonly OrderRepository _orderRepository;
20
21//private ServiceBusProcessor checkOutProcessor;
22//private ServiceBusProcessor orderUpdatePaymentStatusProcessor;
23
24//private readonly IConfiguration _configuration;
25//private readonly IMessageBus _messageBus;
26
27//public AzureServiceBusConsumer(OrderRepository orderRepository, IConfiguration configuration, IMessageBus messageBus)
28//{
29// this._orderRepository = orderRepository;
30// this._configuration = configuration;
31// this._messageBus = messageBus;
32
33// serviceBusConnectionString = _configuration.GetValue<string>("ServiceBusConnectionString");
34// subscriptionCheckOut = _configuration.GetValue<string>("SubscriptionCheckOut");
35// checkoutMessageTopic = _configuration.GetValue<string>("CheckoutMessageTopic");
36// orderPaymentProcessTopic = _configuration.GetValue<string>("OrderPaymentProcessTopics");
37// orderUpdatePaymentResultTopic = _configuration.GetValue<string>("OrderUpdatePaymentResultTopic");
38
39// var client = new ServiceBusClient(serviceBusConnectionString);
40// checkOutProcessor = client.CreateProcessor(checkoutMessageTopic);
41// orderUpdatePaymentStatusProcessor = client.CreateProcessor(orderUpdatePaymentResultTopic, subscriptionCheckOut);
42//}
43
44//public async Task Start()
45//{
46// checkOutProcessor.ProcessMessageAsync += OnCheckOutMessageReceived;
47// checkOutProcessor.ProcessErrorAsync += ErrorHandler;
48// await checkOutProcessor.StartProcessingAsync();
49
50// orderUpdatePaymentStatusProcessor.ProcessMessageAsync += OnOrderPaymentUpdateReceived;
51// orderUpdatePaymentStatusProcessor.ProcessErrorAsync += ErrorHandler;
52// await orderUpdatePaymentStatusProcessor.StartProcessingAsync();
53//}
54//public async Task Stop()
55//{
56// await checkOutProcessor.StopProcessingAsync();
57// await checkOutProcessor.DisposeAsync();
58
59// await orderUpdatePaymentStatusProcessor.StopProcessingAsync();
60// await orderUpdatePaymentStatusProcessor.DisposeAsync();
61//}
62//Task ErrorHandler(ProcessErrorEventArgs args)
63//{
64// Console.WriteLine(args.Exception.ToString());
65// return Task.CompletedTask;
66//}
67
68//private async Task OnCheckOutMessageReceived(ProcessMessageEventArgs args)
69//{
70// var message = args.Message;
71// var body = Encoding.UTF8.GetString(message.Body);
72
73// CheckoutHeaderDto checkoutHeaderDto = JsonConvert.DeserializeObject<CheckoutHeaderDto>(body);
74
75// OrderHeader orderHeader = new()
76// {
77// UserId = checkoutHeaderDto.UserId,
78// FirstName = checkoutHeaderDto.FirstName,
79// LastName = checkoutHeaderDto.LastName,
80// OrderDetails = new List<OrderDetails>(),
81// CardNumber = checkoutHeaderDto.CardNumber,
82// CouponCode = checkoutHeaderDto.CouponCode,
83// CVV = checkoutHeaderDto.CVV,
84// DiscountTotal = checkoutHeaderDto.DiscountTotal,
85// Email = checkoutHeaderDto.Email,
86// ExpiryMonthYear = checkoutHeaderDto.ExpiryMonthYear,
87// OrderTime = DateTime.Now,
88// OrderTotal = checkoutHeaderDto.OrderTotal,
89// PaymentStatus = false,
90// Phone = checkoutHeaderDto.Phone,
91// PickupDateTime = checkoutHeaderDto.PickupDateTime
92// };
93// foreach (var detailList in checkoutHeaderDto.CartDetails)
94// {
95// OrderDetails orderDetails = new()
96// {
97// ProductId = detailList.ProductId,
98// ProductName = detailList.Product.Name,
99// Price = detailList.Product.Price,
100// Count = detailList.Count
101// };
102// orderHeader.CartTotalItems += detailList.Count;
103// orderHeader.OrderDetails.Add(orderDetails);
104// }
105
106// await _orderRepository.AddOrder(orderHeader);
107
108// PaymentRequestMessage paymentRequestMessage = new()
109// {
110// Name = orderHeader.FirstName + " " + orderHeader.LastName,
111// CardNumber = orderHeader.CardNumber,
112// CVV = orderHeader.CVV,
113// ExpiryMonthYear = orderHeader.ExpiryMonthYear,
114// OrderId = orderHeader.OrderHeaderId,
115// OrderTotal = orderHeader.OrderTotal,
116// Email = orderHeader.Email
117// };
118
119// try
120// {
121// await _messageBus.PublishMessage(paymentRequestMessage, orderPaymentProcessTopic);
122// await args.CompleteMessageAsync(args.Message);
123// }
124// catch (Exception e)
125// {
126// throw;
127// }
128//}
129
130//private async Task OnOrderPaymentUpdateReceived(ProcessMessageEventArgs args)
131//{
132// var message = args.Message;
133// var body = Encoding.UTF8.GetString(message.Body);
134
135// UpdatePaymentResultMessage paymentResultMessage = JsonConvert.DeserializeObject<UpdatePaymentResultMessage>(body);
136
137// await _orderRepository.UpdateOrderPaymentStatus(paymentResultMessage.OrderId, paymentResultMessage.Status);
138// await args.CompleteMessageAsync(args.Message);
139//}
140}
141}
142