Пример #1
0
        // This function will get triggered/executed when a new message is written
        // on an Azure Queue called requestpdf.
        public static void ProcessRequsetPDFQueueMessage([QueueTrigger(CoreConstants.AzureQueues.RequsetPDFQueue)] string message, TextWriter log)
        {
            //Get Caller Method name
            string callerMethodName = string.Empty;

            try
            {
                //Get Caller Method name from CallerInformation class
                callerMethodName = CallerInformation.TrackCallerMethodName();
                System.Threading.Thread.Sleep(5000);
                InsightLogger.TrackEvent("RequestUpdateWebJob :: method : requestpdfuri queue trigger, action:reading queue message, response:success, message:" + message);
                //deserialize Queue message to get PDF uri
                RequestPDF      requestPDFdata  = JsonConvert.DeserializeObject <RequestPDF>(message);
                RequestUpdateBL requestupdatebl = new RequestUpdateBL();
                Uri             PDFuri          = new Uri(requestPDFdata.PDFUri);
                InsightLogger.TrackEvent("RequestUpdateWebJob :: method : requestpdfuri queue trigger, action:getting pdfuri from message, response:success");
                //updating request entity with pdf uri
                requestupdatebl.AddPDFUriToRequest(PDFuri, requestPDFdata.UserId, requestPDFdata.RequestID);
                InsightLogger.TrackEvent("RequestUpdateWebJob :: method : requestpdfuri queue trigger, action:updating request object with pdf uri, response:success, requsetID:" + requestPDFdata.RequestID);
            }
            catch (DataAccessException dalexception)
            {
                //write message to web job dashboard logs
                log.WriteLine(dalexception.Message);
            }
            catch (BusinessLogicException blexception)
            {
                //write message to web job dashboard logs
                log.WriteLine(blexception.Message);
            }
            catch (Exception exception)
            {
                //write exception into application insights
                InsightLogger.Exception(exception.Message + " - Error in Queue trigger while processing pdf uri", exception, callerMethodName);
                log.WriteLine(exception.Message);
            }
        }
Пример #2
0
        // This function will get triggered/executed when a new message is written
        // on an Azure Queue called RequsetUpdate.
        public static void ProcessRequsetQueueMessage([QueueTrigger(CoreConstants.AzureQueues.RequsetUpdateQueue)] string message, TextWriter log)
        {
            //Get Caller Method name
            string callerMethodName = string.Empty;

            try
            {
                //Get Caller Method name from CallerInformation class
                callerMethodName = CallerInformation.TrackCallerMethodName();
                InsightLogger.TrackEvent("RequestUpdateWebJob :: method : requestupdate queue trigger, action:Reading queue message, response:succuess, message: " + message);
                //deserialize Queue message to Requests
                RequestsUpdateData    requestsdata        = JsonConvert.DeserializeObject <RequestsUpdateData>(message);
                List <BackendRequest> backendrequestslist = requestsdata.Requests;
                RequestUpdateBL       requsetupdatebl     = new RequestUpdateBL();
                //get backend to get missingconfirmationlimit for backend and also to update flags
                BackendEntity backend             = requsetupdatebl.Getbackend(requestsdata.BackendID);
                int           TotalRequestsize    = 0;
                int           TotalRequestlatency = 0;
                int           requestcount        = backendrequestslist.Count;
                //check if requests were available
                if (backendrequestslist != null && backendrequestslist.Count > 0)
                {
                    //looping through each backendrequest to add requests , approvers and fields for each requet
                    InsightLogger.TrackEvent("RequestUpdateWebJob :: method : requestupdate queue trigger, action:looping all requests");
                    foreach (BackendRequest backendrequest in backendrequestslist)
                    {
                        //split main backendrequest object into individual entities
                        List <Approvers> approvers         = backendrequest.RequestsList.Approvers;
                        List <Field>     genericInfoFields = backendrequest.RequestsList.Fields.GenericInfo;
                        List <Field>     overviewFields    = backendrequest.RequestsList.Fields.Overview;
                        Request          request           = backendrequest.RequestsList;
                        //calling BL methods to add request , approval, approvers and fields
                        if (!string.IsNullOrEmpty(request.UserID))
                        {
                            InsightLogger.TrackEvent("RequestUpdateWebJob :: method : requestupdate queue trigger, action:clearing request waiting flag, response:success");
                            requsetupdatebl.AddUpdateRequest(backendrequest, request.UserID, requestsdata.BackendID);
                            InsightLogger.TrackEvent("RequestUpdateWebJob :: method : requestupdate queue trigger, action:update request object, response:success, requestID:" + request.ID);
                            requsetupdatebl.AddUpdateApproval(approvers, request.ID, backendrequest.RequestsList.UserID, requestsdata.BackendID, backend.MissingConfirmationsLimit, request.Title);
                            InsightLogger.TrackEvent("RequestUpdateWebJob :: method : requestupdate queue trigger, action:update/remove/create approval object, response:success");
                            requsetupdatebl.AddUpdateApprovers(approvers, request.ID);
                            requsetupdatebl.AddUpdateFields(genericInfoFields, overviewFields, request.ID);
                            //caliculating request size
                            int requestsize = requsetupdatebl.CalculateRequestSize(backendrequest);
                            //caliculating total of size for all requests
                            TotalRequestsize = TotalRequestsize + requestsize;
                            //caliculating total of latency for all requests
                            TotalRequestlatency = TotalRequestlatency + request.Latency;
                        }
                    }
                }
                InsightLogger.TrackEvent("RequestUpdateWebJob :: method : requestupdate queue trigger, action:looping all requests end");
                //calling BL methods to update average sizes and latencies for userbackend and backend
                if (!string.IsNullOrEmpty(requestsdata.UserId))
                {
                    InsightLogger.TrackEvent("RequestUpdateWebJob :: method : requestupdate queue trigger, action:check user or request, response:user");
                    requsetupdatebl.UpdateUserBackend(requestsdata.UserId, requestsdata.BackendID, TotalRequestsize, TotalRequestlatency, requestcount);
                    InsightLogger.TrackEvent("RequestUpdateWebJob :: method : requestupdate queue trigger, action:update userbackend tracking variables, response:success");
                }
                InsightLogger.TrackEvent("RequestUpdateWebJob :: method : requestupdate queue trigger, action:update backend tracking variables, response:success, backendID:" + requestsdata.BackendID);
                requsetupdatebl.UpdateBackend(backend, TotalRequestsize, TotalRequestlatency, requestcount);
                InsightLogger.TrackEvent("RequestUpdateWebJob :: method : requestupdate queue trigger, action:end of the method");
            }
            catch (DataAccessException dalexception)
            {
                //write message to web job dashboard logs
                log.WriteLine(dalexception.Message);
            }
            catch (BusinessLogicException blexception)
            {
                //write message to web job dashboard logs
                log.WriteLine(blexception.Message);
            }
            catch (Exception exception)
            {
                //write exception into application insights
                InsightLogger.Exception(exception.Message + " - Error in Queue trigger while processing request", exception, callerMethodName);
                log.WriteLine(exception.Message);
            }
        }