コード例 #1
0
ファイル: QMHelper.cs プロジェクト: santhign/Grid
        public async void ProcessAccountInvoiceQueueMessage(int InvoiceID)
        {
            try
            {
                OrderDataAccess _orderAccess = new OrderDataAccess(_iconfiguration);

                DatabaseResponse accountTypeResponse = await _orderAccess.GetInvoiceRemarksFromInvoiceID(InvoiceID);

                if (((string)accountTypeResponse.Results) == "RecheduleDeliveryInformation")
                {
                    DatabaseResponse orderMqResponse = new DatabaseResponse();
                    orderMqResponse = await _messageQueueDataAccess.GetRescheduleMessageQueueBody(InvoiceID);

                    QMHelper qMHelper = new QMHelper(_iconfiguration, _messageQueueDataAccess);
                    var      result   = await qMHelper.SendMQ(orderMqResponse);

                    var invoiceDetails = (RescheduleDeliveryMessage)orderMqResponse.Results;

                    if (invoiceDetails != null && invoiceDetails.slotDate != null)
                    {
                        CustomerDetails customer = new CustomerDetails
                        {
                            Name                  = invoiceDetails.name,
                            DeliveryEmail         = invoiceDetails.email,
                            ShippingContactNumber = invoiceDetails.shippingContactNumber,
                            OrderNumber           = invoiceDetails.orderNumber,
                            SlotDate              = invoiceDetails.slotDate ?? DateTime.Now,
                            SlotFromTime          = invoiceDetails.slotFromTime ?? DateTime.Now.TimeOfDay,
                            SlotToTime            = invoiceDetails.slotToTime ?? DateTime.Now.TimeOfDay
                        };

                        string status = await SendOrderSuccessSMSNotification(customer, NotificationEvent.RescheduleDelivery.ToString());
                    }
                }

                else
                {
                    DatabaseResponse invoiceMqResponse = new DatabaseResponse();

                    invoiceMqResponse = await _messageQueueDataAccess.GetAccountInvoiceMessageQueueBody(InvoiceID);

                    InvoceQM invoiceDetails = new InvoceQM();

                    string topicName = string.Empty;

                    string pushResult = string.Empty;

                    if (invoiceMqResponse != null && invoiceMqResponse.Results != null)
                    {
                        invoiceDetails = (InvoceQM)invoiceMqResponse.Results;

                        // invoiceDetails.invoicelist= await GetInvoiceList(invoiceDetails.customerID);

                        invoiceDetails.paymentmode = invoiceDetails.CardFundMethod == EnumExtensions.GetDescription(PaymentMode.CC) ? PaymentMode.CC.ToString() : PaymentMode.DC.ToString();

                        MessageQueueRequest queueRequest = new MessageQueueRequest
                        {
                            Source           = CheckOutType.AccountInvoices.ToString(),
                            NumberOfRetries  = 1,
                            SNSTopic         = topicName,
                            CreatedOn        = DateTime.Now,
                            LastTriedOn      = DateTime.Now,
                            PublishedOn      = DateTime.Now,
                            MessageAttribute = EnumExtensions.GetDescription(RequestType.PayBill),
                            MessageBody      = JsonConvert.SerializeObject(invoiceDetails),
                            Status           = 0
                        };

                        try
                        {
                            Dictionary <string, string> attribute = new Dictionary <string, string>();

                            topicName = ConfigHelper.GetValueByKey(ConfigKey.SNS_Topic_ChangeRequest.GetDescription(), _iconfiguration).Results.ToString().Trim();

                            attribute.Add(EventTypeString.EventType, EnumExtensions.GetDescription(RequestType.PayBill));

                            pushResult = await _messageQueueDataAccess.PublishMessageToMessageQueue(topicName, invoiceDetails, attribute);

                            queueRequest.PublishedOn = DateTime.Now;

                            if (pushResult.Trim().ToUpper() == "OK")
                            {
                                queueRequest.Status = 1;

                                await _messageQueueDataAccess.InsertMessageInMessageQueueRequest(queueRequest);
                            }
                            else
                            {
                                queueRequest.Status = 0;

                                await _messageQueueDataAccess.InsertMessageInMessageQueueRequest(queueRequest);
                            }
                        }
                        catch (Exception ex)
                        {
                            LogInfo.Error(new ExceptionHelper().GetLogString(ex, ErrorLevel.Critical));

                            queueRequest.Status = 0;

                            await _messageQueueDataAccess.InsertMessageInMessageQueueRequest(queueRequest);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                LogInfo.Error(new ExceptionHelper().GetLogString(ex, ErrorLevel.Critical));
            }
        }