Example #1
0
        public static async Task <HttpResponseMessage> Run(HttpRequestMessage req, ICollector <string> errormessage, TraceWriter log)
        {
            log.Verbose($"C# HTTP trigger function processed a request. RequestUri={req.RequestUri}", "JE.RMS.Services.SubmitRewardsRequest");
            try
            {
                // Get request body

                /*JObject data = await req.Content.ReadAsAsync<JObject>();
                 * string FulfillmentChannel = (string)data.SelectToken("FulfillmentChannel");*/

                string ChannelCode = req.GetQueryNameValuePairs().FirstOrDefault(q => string.Compare(q.Key, "ChannelCode", true) == 0).Value;

                if (!string.IsNullOrEmpty(ChannelCode))
                {
                    //Call stored procedure to Update RewardTrx
                    List <SqlParameter> FulfillmentChanneParams = new List <SqlParameter>();
                    FulfillmentChanneParams.Add(new SqlParameter("@FulfillmentChannel", ChannelCode));
                    var FulfillmentChannelID = MSSQLConnection.ExecuteStoredProcedure <long>(USPContstants.GetFulfillmentChannelID, FulfillmentChanneParams);
                    if (FulfillmentChannelID.Count == 0)
                    {
                        return(req.CreateResponse(HttpStatusCode.BadRequest, "Invalid channel code."));
                    }
                    log.Verbose($"FulfillmentChannelID={FulfillmentChannelID[0]}", "JE.RMS.Services.GetRewardFulfillmentRequest");
                    RewardFulfillmentResponseList res  = new RewardFulfillmentResponseList();
                    RewardFulfillmentResponseList resp = GetMessagesFromSubscription(FulfillmentChannelID[0], res, log);

                    return(req.CreateResponse(HttpStatusCode.OK, resp));
                }
                else
                {
                    return(req.CreateResponse(HttpStatusCode.BadRequest, "Required ChannelCode as request parameters."));
                }
            }
            catch (Exception ex)
            {
                log.Error($"Exception ={ex}", ex, "JE.RMS.Services.SubmitRewardsRequest");
                errormessage.Add(JsonConvert.SerializeObject(ex).ToString());
                return(req.CreateErrorResponse(HttpStatusCode.InternalServerError, ex));
            }
        }
Example #2
0
        public static RewardFulfillmentResponseList GetMessagesFromSubscription(long FulfillmentChannelID, RewardFulfillmentResponseList resp, TraceWriter log)
        {
            IEnumerable <BrokeredMessage> RecievedMessage = null;
            long MessageCount = 0;

            if (resp.RewardFulfillmentRequest == null)
            {
                resp.RewardFulfillmentRequest = new List <RewardFulfillmentRequest>();
            }
            BatchSize = BatchSize - resp.RewardFulfillmentRequest.Count;
            if (FulfillmentChannelID == (int)Common.Constants.FulfillmentChannel.GBASSTariff)
            {
                MessageCount = namespaceManager.GetSubscription("fulfillmentrequest", "GBASSTariffSubscription").MessageCount;
                if (MessageCount > 0)
                {
                    RecievedMessage = GBASSTariffSubscription.ReceiveBatch(BatchSize, new TimeSpan(0, 0, 0));
                }
            }
            else if (FulfillmentChannelID == (int)Common.Constants.FulfillmentChannel.GBASSCTLAdj)
            {
                MessageCount = namespaceManager.GetSubscription("fulfillmentrequest", "GBASSCTLAdjSubscription").MessageCount;
                if (MessageCount > 0)
                {
                    RecievedMessage = GBASSCTLAdjSubscription.ReceiveBatch(BatchSize, new TimeSpan(0, 0, 0));
                }
            }
            else if (FulfillmentChannelID == (int)Common.Constants.FulfillmentChannel.Cheque)
            {
                MessageCount = namespaceManager.GetSubscription("fulfillmentrequest", "SmartConnectSubscription").MessageCount;
                if (MessageCount > 0)
                {
                    RecievedMessage = SmartConnectSubscriptionClient.ReceiveBatch(BatchSize, new TimeSpan(0, 0, 0));
                }
            }
            List <Guid> messageLockTokenList = new List <System.Guid>();

            resp.HasMoreMessages = false;
            if (RecievedMessage != null && RecievedMessage.Count() > 0)
            {
                foreach (BrokeredMessage message in RecievedMessage)
                {
                    var    raw = message.GetBody <string>();
                    var    RewardFulfillmentRequestObj = JsonConvert.DeserializeObject <RewardFulfillmentRequestList>(raw);
                    string RMSRewardID = RewardFulfillmentRequestObj.RewardFulfillmentRequest.RMSRewardID;
                    ////Call stored procedure to Update RewardTrx
                    List <SqlParameter> RewardTrxParams = new List <SqlParameter>();
                    RewardTrxParams.Add(new SqlParameter("@RMSRewardID", RMSRewardID));
                    var UpdatedRewardTrxID = MSSQLConnection.ExecuteStoredProcedure <long>(USPContstants.UpdateProcessFulfillmentTimestamp, RewardTrxParams).FirstOrDefault();
                    log.Verbose($"RewardTrx updated successfully. RewardTrID={UpdatedRewardTrxID}", "JE.RMS.Services.GetRewardFulfillmentRequest");
                    resp.RewardFulfillmentRequest.Add(RewardFulfillmentRequestObj.RewardFulfillmentRequest);
                    messageLockTokenList.Add(message.LockToken);
                }

                if (FulfillmentChannelID == (int)Common.Constants.FulfillmentChannel.GBASSTariff)
                {
                    GBASSTariffSubscription.CompleteBatch(messageLockTokenList);
                }
                else if (FulfillmentChannelID == (int)Common.Constants.FulfillmentChannel.GBASSCTLAdj)
                {
                    GBASSCTLAdjSubscription.CompleteBatch(messageLockTokenList);
                }
                else if (FulfillmentChannelID == (int)Common.Constants.FulfillmentChannel.Cheque)
                {
                    SmartConnectSubscriptionClient.CompleteBatch(messageLockTokenList);
                }
            }

            resp.HasMoreMessages = MessageCount > resp.RewardFulfillmentRequest.Count ? true : false;
            if (resp.HasMoreMessages && resp.RewardFulfillmentRequest.Count < RepeatCallSize)
            {
                GetMessagesFromSubscription(FulfillmentChannelID, resp, log);
            }
            resp.TotalRecord = MessageCount;
            return(resp);
        }