Пример #1
0
        //public async Task<bool> UpdateOpportunityAsync(SalesForceResponse salesForceResponse, SalesForceOpprtunity opp, string opportunityId)
        public async Task <bool> UpdateOpportunityAsync(SalesForceResponse salesForceResponse, SalesForceOpprtunity opp, string opportunityId, string loanStatusCode)
        {
            LoggerService.Debug("Entered UpdateOpportunityAsync", "INFO");
            bool isOpportunityUpdated   = false;
            OpportunityUpdateFields ouf = new OpportunityUpdateFields();

            ouf.Name = opp.OppurtunityName;

            if (loanStatusCode == "4") //New Loan
            {
                LoggerService.Debug("loanStatusCode = 4", "INFO");
                ouf.StageName = opp.stage;
                ouf.CloseDate = opp.closedate;
                ouf.OwnerID   = opp.OwnerID;
            }
            else if (loanStatusCode == "9" || loanStatusCode == "10" || loanStatusCode == "59" || loanStatusCode == "12")
            {
                LoggerService.Debug("loanStatusCode: ", loanStatusCode);
                ouf.StageName = opp.stage;
                ouf.OwnerID   = opp.OwnerID;
                ouf.CloseDate = opp.closedate;
                ouf.Amount    = opp.Amount;
            }

            string opportunityUpdateUrl = salesForceResponse.instance_url + "/services/data/v26.0/sobjects/Opportunity/" + opportunityId;

            using (HttpClient httpClient = new HttpClient())
            {
                httpClient.DefaultRequestHeaders.Add("Authorization", "OAuth " + salesForceResponse.access_token);
                HttpContent httpcontent = new StringContent(javaScriptSerializer.Serialize(ouf), Encoding.UTF8, "application/json");

                httpResponseMessage = await httpClient.PatchAsync(new Uri(opportunityUpdateUrl), httpcontent);

                LoggerService.Debug("httpResponseMessage :", httpResponseMessage);

                var opportunityUpdateResult = await httpResponseMessage.Content.ReadAsStringAsync();

                LoggerService.Debug("opportunityUpdateResult :", opportunityUpdateResult);


                if (httpResponseMessage != null && httpResponseMessage.IsSuccessStatusCode)
                {
                    isOpportunityUpdated = true;
                }
            }

            LoggerService.Debug("Leaving UpdateOpportunityAsync", "INFO");
            return(isOpportunityUpdated);
        }
Пример #2
0
        async Task SalesForceCRUD()
        {
            string sfAuthenticationResult = string.Empty;
            bool   processData            = true;
            string strFileDataID          = null;
            string queueid = "-1";

            try
            {
                DateTime start = DateTime.Now;

                LoggerService.Debug("Salesforce authentication started at ", start);

                SalesForceConnectionData sfd = objSalesForceBL.GetSalesForceConnectionData();

                if (sfd.securityToken != null && sfd.securityToken.Length > 0)
                {
                    sfd.password = sfd.password + sfd.securityToken;
                }

                using (HttpClient httpClient = new HttpClient())
                {
                    FormUrlEncodedContent formUrlEncodedContent = new FormUrlEncodedContent(new[]
                    {
                        new KeyValuePair <string, string>("grant_type", "password"),
                        new KeyValuePair <string, string>("username", sfd.username),
                        new KeyValuePair <string, string>("password", sfd.password),
                        new KeyValuePair <string, string>("client_id", sfd.consumerKey),
                        new KeyValuePair <string, string>("client_secret", sfd.consumerSecret)
                    });

                    //The line below enables TLS1.1 and TLS1.2
                    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

                    httpResponseMessage = await httpClient.PostAsync(sfd.baseUrl, formUrlEncodedContent);

                    sfAuthenticationResult = await httpResponseMessage.Content.ReadAsStringAsync();
                }

                if (httpResponseMessage != null && httpResponseMessage.IsSuccessStatusCode)
                {
                    salesForceResponse = (SalesForceResponse)jsonSerializer.Deserialize(sfAuthenticationResult, typeof(SalesForceResponse));
                    sfd.restServiceUrl = salesForceResponse.instance_url + ConfigurationManager.AppSettings["restServiceUrlPostfix"];

                    LoggerService.Debug("Logged in as " + sfd.username + " in environment " + sfd.loginHost + "\n", "");
                    LoggerService.Debug("postback_url:", sfd.baseUrl);
                    LoggerService.Debug("response:", jsonSerializer.Serialize(salesForceResponse));
                    LoggerService.Debug("access_token:", salesForceResponse.access_token);
                    LoggerService.Debug("instance_url:", salesForceResponse.instance_url);
                    LoggerService.Debug("restServiceUrl:", sfd.restServiceUrl);
                    LoggerService.Debug("It took " + (DateTime.Now - start).Hours + " Hour(s) " + (DateTime.Now - start).Minutes + " Minute(s) " + (DateTime.Now - start).Seconds + " Second(s) in salesforce authentication", "");
                }
                else
                {
                    LoggerService.Error("", "SFService->SalesForceCRUD(): " + "\r\nError Message: " + httpResponseMessage.StatusCode);
                }

                while (processData)
                {
                    try
                    {
                        //Get top 1 record to process [Query 1]
                        DataTable dtQueueDetail = objSalesForceBL.GetLoanQueueData(); //Based on LoanStatus=4

                        if (dtQueueDetail.Rows.Count > 0)
                        {
                            strFileDataID = dtQueueDetail.Rows[0]["FileDataID"].ToString(); //Get FileDataID
                            LoggerService.Debug("FiledataID:", strFileDataID);

                            queueid = dtQueueDetail.Rows[0]["QueueID"].ToString(); //Get QueueID
                            LoggerService.Debug("QueueID: ", queueid);

                            string strLoanStatusCode = dtQueueDetail.Rows[0]["LoanStatus"].ToString();
                            string strOppID          = dtQueueDetail.Rows[0]["OppId"].ToString();

                            //if you get record to process then continue...else processData = false;
                            if (strFileDataID.Length <= 0)
                            {
                                processData = false;
                                LoggerService.Debug("No data found in queue table.", "INFO");
                            }
                            else
                            {
                                //UPDATE[ByteProSFQueue] SET Status = 'PROCESSING'
                                objSalesForceBL.UpdateQueueRecord("PROCESSING", queueid);
                                LoggerService.Debug("UpdateQueueRecord:", "PROCESSING");

                                // Get party Email, CategoryId,ContactNMLSID,BranchId etc from Party based on filedataid  and CategoryId= 110 = Broker
                                string    ContactNMLSID = string.Empty;
                                string    CompanyNMLSID = string.Empty;
                                string    BranchID      = string.Empty;
                                string    EMail         = string.Empty;
                                DataTable dtParty       = new DataTable();
                                dtParty = objSalesForceBL.GetPartyinfo(strFileDataID);

                                if (dtParty.Rows.Count > 0)
                                {
                                    ContactNMLSID = dtParty.Rows[0]["ContactNMLSID"].ToString(); //Get ContactNMLSID
                                    LoggerService.Debug("ContactNMLSID:", ContactNMLSID);

                                    //CompanyNMLSID = "144549";//To be removed, other smaple data "8473959844" for debugging purpose.
                                    CompanyNMLSID = dtParty.Rows[0]["CompanyNMLSID"].ToString(); //Get CompanyNMLSID
                                    LoggerService.Debug("CompanyNMLSID:", CompanyNMLSID);

                                    BranchID = dtParty.Rows[0]["BranchID"].ToString(); //Get BranchID
                                    LoggerService.Debug("BranchID:", BranchID);

                                    EMail = dtParty.Rows[0]["EMail"].ToString(); //Get Email
                                    LoggerService.Debug("EMail:", EMail);
                                }
                                else
                                {
                                    LoggerService.Debug("No data found in Party Table", "INFO");
                                }


                                //Get filename and Closingdate from FileData table
                                string    strFileName  = string.Empty;
                                DateTime  closingDate  = DateTime.MinValue;
                                DataTable dtFileDetail = objSalesForceBL.GetFileDetail(strFileDataID);
                                if (dtFileDetail.Rows.Count > 0)
                                {
                                    strFileName = dtFileDetail.Rows[0]["FileName"].ToString(); //Get FileName
                                    LoggerService.Debug("FileName:", strFileName);

                                    closingDate = (DateTime)(dtFileDetail.Rows[0]["CloseDate"]); //Get ClosingDate
                                    LoggerService.Debug("ClosingDate:", closingDate);
                                }
                                else
                                {
                                    LoggerService.Debug("No data found in FileData Table", "ERROR");
                                }

                                //await objSalesForceBL.GetOpportunityAsync(salesForceResponse, "test");
                                // retreive salesforce accountid and user id using those methods
                                //SalesForceClientEntities.Account.AccountFields accFields = await objSalesForceBL.GetAccountAsync(salesForceResponse, CompanyNMLSID);
                                LoggerService.Debug("Calling GetContactAsync", "INFO");
                                SalesForceClientEntities.Contact.ContactFields conFileds = await objSalesForceBL.GetContactAsync(salesForceResponse, ContactNMLSID);

                                LoggerService.Debug("Setting Entity", "INFO");
                                //Set entity with data retrieved

                                if (strLoanStatusCode == "4") //New Opp. to be created. (API 1 & 1.5)
                                {
                                    LoggerService.Debug("API 1.0 start", "INFO");
                                    //create opportunity
                                    SalesForceOpprtunity opp = new SalesForceOpprtunity();
                                    opp.OppurtunityName = strFileName; //FileName from dbo.FileData based on FileDataID
                                    opp.stage           = "Qualification";
                                    opp.closedate       = closingDate.ToString("yyyy-MM-dd");
                                    opp.ContactID       = conFileds.ContactId;
                                    opp.AccountID       = conFileds.AccountId;
                                    opp.OwnerID         = conFileds.OwnerId;
                                    opp.ByteFileDataID  = strFileDataID;

                                    LoggerService.Debug("Calling CreateOpportunityAsync()", "INFO");
                                    string opportunityId = await objSalesForceBL.CreateOpportunityAsync(salesForceResponse, opp);

                                    if (opportunityId != null)
                                    {
                                        LoggerService.Debug("Opportunity created with opportunityId:", opportunityId);
                                    }
                                    else
                                    {
                                        LoggerService.Debug("Opportunity creation failed", "ERROR!!!");
                                    }

                                    //Update queue table with PROCESSED and oppid
                                    objSalesForceBL.UpdateQueueRecord(queueid, "PROCESSED", opportunityId);
                                    LoggerService.Debug("UpdateQueueRecord: PROCESSED", "INFO");
                                    LoggerService.Debug("API 1 Over", "INFO");

                                    LoggerService.Debug("API 1.5 Starts", "INFO");
                                    SalesForceClientEntities.User.UserFields usrFileds = await objSalesForceBL.GetUserAsync(salesForceResponse, conFileds.OwnerId);

                                    string strName     = usrFileds.Name;
                                    string strUserName = usrFileds.Username;
                                    string strUsrEmail = usrFileds.Email;

                                    //Update dbo.Party Table
                                    objSalesForceBL.UpdatePartyRecord(strUsrEmail, strUserName, strFileDataID);
                                    LoggerService.Debug("Update dbo.Party Table", "INFO");

                                    LoggerService.Debug("API 1.5 Over", "INFO");
                                }
                                else if (strLoanStatusCode == "9") //Closed_Won Loan
                                {
                                    //Update queue table with PROCESSING and queueid
                                    objSalesForceBL.UpdateQueueRecord("PROCESSING", queueid);
                                    LoggerService.Debug(" Closed_Won Loan - UpdateQueueRecord: PROCESSING", "INFO");

                                    SalesForceOpprtunity opp = new SalesForceOpprtunity();
                                    opp.OppurtunityName = strFileName;
                                    opp.stage           = "Closed Won";
                                    opp.OwnerID         = conFileds.OwnerId;
                                    opp.closedate       = DateTime.Now.ToString("yyyy-MM-dd");
                                    opp.Amount          = objSalesForceBL.GetRevenueinfo(strFileDataID);

                                    LoggerService.Debug("Calling UpdateOpportunityAsync ", "INFO");
                                    bool isUpdated = false;
                                    isUpdated = await objSalesForceBL.UpdateOpportunityAsync(salesForceResponse, opp, strOppID, strLoanStatusCode);

                                    if (isUpdated)
                                    {
                                        //Update queue table with PROCESSED and queueid
                                        objSalesForceBL.UpdateQueueRecord("PROCESSED", queueid);
                                        LoggerService.Debug("Closed_Won Loan - UpdateQueueRecord: PROCESSED", "INFO");
                                    }
                                    else
                                    {
                                        LoggerService.Debug("Closed_Won Loan - FAILED!!!", "ERROR");
                                    }
                                }
                                else if (strLoanStatusCode == "10" || strLoanStatusCode == "59") //Closed_Lost Loan
                                {
                                    //Update queue table with PROCESSING and queueid
                                    objSalesForceBL.UpdateQueueRecord("PROCESSING", queueid);
                                    LoggerService.Debug("Closed_Lost Loan - UpdateQueueRecord: PROCESSING", "INFO");

                                    SalesForceOpprtunity opp = new SalesForceOpprtunity();
                                    opp.OppurtunityName = strFileName;
                                    opp.stage           = "Closed Lost";
                                    opp.OwnerID         = conFileds.OwnerId;
                                    opp.closedate       = DateTime.Now.ToString("yyyy-MM-dd");
                                    opp.Amount          = objSalesForceBL.GetRevenueinfo(strFileDataID);


                                    bool isUpdated = false;
                                    isUpdated = await objSalesForceBL.UpdateOpportunityAsync(salesForceResponse, opp, strOppID, strLoanStatusCode);

                                    if (isUpdated)
                                    {
                                        //Update queue table with PROCESSED and queueid
                                        objSalesForceBL.UpdateQueueRecord("PROCESSED", queueid);
                                        LoggerService.Debug("Closed_Lost Loan - UpdateQueueRecord: PROCESSED", "INFO");
                                    }
                                    else
                                    {
                                        LoggerService.Debug("Closed_Lost Loan - FAILED!!!", "ERROR");
                                    }
                                }
                                else if (strLoanStatusCode == "12") //Suspended Loan
                                {
                                    //Update queue table with PROCESSING and queueid
                                    objSalesForceBL.UpdateQueueRecord("PROCESSING", queueid);
                                    LoggerService.Debug("Suspended Loan - UpdateQueueRecord: PROCESSING", "INFO");

                                    SalesForceOpprtunity opp = new SalesForceOpprtunity();
                                    opp.OppurtunityName = strFileName;
                                    opp.stage           = "Suspended";
                                    opp.OwnerID         = conFileds.OwnerId;
                                    opp.closedate       = DateTime.Now.ToString("yyyy-MM-dd");
                                    opp.Amount          = objSalesForceBL.GetRevenueinfo(strFileDataID);


                                    bool isUpdated = false;
                                    isUpdated = await objSalesForceBL.UpdateOpportunityAsync(salesForceResponse, opp, strOppID, strLoanStatusCode);

                                    if (isUpdated)
                                    {
                                        //Update queue table with PROCESSED and queueid
                                        objSalesForceBL.UpdateQueueRecord("PROCESSED", queueid);
                                        LoggerService.Debug("Suspended Loan - UpdateQueueRecord: PROCESSING", "INFO");
                                    }
                                    else
                                    {
                                        LoggerService.Debug("Suspended Loan - FAILED!!!", "ERROR");
                                    }
                                }
                            }
                        }
                        else
                        {
                            processData = false;
                            LoggerService.Debug("No queued data found. Exit loop.", "INFO");
                        }
                    }
                    catch (Exception ex)
                    {
                        // update queue table with error and status
                        objSalesForceBL.UpdateQueueRecord(queueid, "ERROR", ex.Message.ToString());
                        LoggerService.Error("", "SFService->SalesForceCRUD(): " + "\r\nError Message: " + ex.Message + "\r\nStackTrace: " + ex.StackTrace);
                    }
                }
            }
            catch (Exception ex)
            {
                LoggerService.Error("", "SFService->SalesForceCRUD(): " + "\r\nError Message: " + ex.Message + "\r\nStackTrace: " + ex.StackTrace);
            }
        }
Пример #3
0
        public async Task <string> CreateOpportunityAsync(SalesForceResponse salesForceResponse, SalesForceOpprtunity opp)
        {
            LoggerService.Debug("Entered CreateOpportunityAsync", "INFO");
            string opportunityId = string.Empty;

            try
            {
                CreateOpportunityFields createOpportunityFields = new CreateOpportunityFields();

                createOpportunityFields.Name               = opp.OppurtunityName;
                createOpportunityFields.Contact__c         = opp.ContactID;
                createOpportunityFields.CloseDate          = opp.closedate;
                createOpportunityFields.StageName          = opp.stage;
                createOpportunityFields.AccountId          = opp.AccountID;
                createOpportunityFields.Byte_FileDataID__c = opp.ByteFileDataID;

                LoggerService.Debug("Setting Opp data, and calling CreateOpportunityAsync()", "");
                opportunityId = await CreateOpportunityAsync(salesForceResponse, createOpportunityFields);

                bool isUpdated = false;
                if (opportunityId != null)
                {
                    isUpdated = await UpdateOpportunityAsync(salesForceResponse, opp, opportunityId, "4"); //Creating New opp based on loanstatus code = 4
                }
            }
            catch (Exception ex)
            {
                LoggerService.Error("", "SalesForceBL->CreateOpportunityAsync(): " + "\r\nError Message: " + ex.Message + "\r\nStackTrace: " + ex.StackTrace);
            }

            return(opportunityId);
        }