}// must return boolean //update "acte" by "acte" this fucntion consume more time/space than updateSalesForceV1 but fix permission issue // method must be splited for each attribute identifier ♣ GERER L'exception de celui la public void updateSalesForce(Dictionary <string[], WsResponse> responses) { // IDS string username = ConfigurationManager.AppSettings["loginSF"]; string passwd = ConfigurationManager.AppSettings["mdpSF"]; SforceService SfService = new GED.Tools.WSDLQualifFinal.SforceService(); LoginResult loginResult = SfService.login(username, passwd); SfService.Url = loginResult.serverUrl; SfService.SessionHeaderValue = new SessionHeader(); SfService.SessionHeaderValue.sessionId = loginResult.sessionId; foreach (KeyValuePair <string[], WsResponse> response in responses) { //UPDATE ACTE Acte__c SfActe = new Acte__c(); //string soqlQuery = "SELECT Id, Commentaire_Interne__c, Statut_du_XML__c FROM Acte__c WHERE Name = '" + response.Key + "'"; OLD string soqlQueryActe = "SELECT Id, Commentaire_XML__c, Statut_du_XML__c FROM Acte__c WHERE Name = '" + response.Key[0] + "'"; QueryResult result = SfService.query(soqlQueryActe); if (result.size != 0) { SfActe = (Acte__c)result.records[0]; // take the only item selected } // update data SfActe.Commentaire_XML__c = string.Join(" ", responses[response.Key].message); SfActe.Statut_du_XML__c = responses[response.Key].status_xml; // <== update status for prod acte and leave it empty in acte if (!responses[response.Key].isSuccessCall) { SfActe.fieldsToNull = new String[] { "Date_Envoi_Prod__c" } } ; // purger la date pour qu'elle ne figure pas dans la Regul SaveResult[] saveResults = SfService.update(new sObject[] { SfActe }); // must return one or zero //UPDATE PROD ACTE Production_Acte__c prodActe = new Production_Acte__c(); string soqlQueryProdActe = "SELECT Id, Statut_du_XML__c FROM Production_Acte__c WHERE Name = '" + response.Key[1] + "'"; result = SfService.query(soqlQueryProdActe); if (result.size != 0) { prodActe = (Production_Acte__c)result.records[0]; } prodActe.Statut_du_XML__c = responses[response.Key].status_xml; saveResults = SfService.update(new sObject[] { prodActe }); } }
private void button12_Click(object sender, EventArgs e) { //## this fucntion must after all manage exceptions in case if we can't connect to Force.com API // fetch for all actes data list // List<Acte> actes = Definition.GetListeActes(); // data for testing // string[] idActes = actes.Select(p => p.ReferenceInterne).ToArray(); // extract ids actes // string idList = "'" + String.Join("','", idActes) + "'"; // construct the part of 'in' query string clause string soqlQuery = ""; // "SELECT Name, Commentaire_Interne__c, Statut_du_XML__c FROM Acte__c where Name in ("+ idList +")"; string username = "******"; // string passwd = "nortia01"; // SforceService SfService = new GED.Tools.WSDLQualifFinal.SforceService(); // call ws Dictionary <string, string> dictionnaire = new Dictionary <string, string>(); try { LoginResult loginResult = SfService.login(username, passwd); SfService.Url = loginResult.serverUrl; SfService.SessionHeaderValue = new SessionHeader(); SfService.SessionHeaderValue.sessionId = loginResult.sessionId; QueryResult result = SfService.query(soqlQuery); // array to alter/safe Acte__c[] SfActes = new Acte__c[result.size]; for (int i = 0; i < result.size; i++) { // cast data SfActes[i] = (Acte__c)result.records[i]; //update list //updating current cell //extract here message format and status SfActes[i].Commentaire_Interne__c += "\n" + dictionnaire[SfActes[i].Name]; SfActes[i].Statut_du_XML__c = dictionnaire[SfActes[i].Name]; MessageBox.Show("data retrived ==> " + SfActes[i].Commentaire_Interne__c + " ; " + SfActes[i].Statut_du_XML__c); } // save update SaveResult[] saveResultsV2 = SfService.update(SfActes); // deplcaer vers la fin } catch (Exception ex) { SfService = null; throw (ex); // you shall not pass } }