public CResultAErreur Execute(int nIdSession, Hashtable valeursParametres) { CResultAErreur result = CResultAErreur.True; using (CContexteDonnee contexte = new CContexteDonnee(nIdSession, true, false)) { try { CHandlerEvenementServeur.SuspendGestionnaire(true); // Supprimer les interventions SANS DEPLACEMENT CListeObjetsDonnees listeIntersASupprimer = new CListeObjetsDonnees(contexte, typeof(CIntervention)); listeIntersASupprimer.Filtre = new CFiltreDataAvance( CIntervention.c_nomTable, //CIntervention.c_champId + " > @1 AND " + // DEBUG CFractionIntervention.c_nomTable + "." + COperation.c_nomTable + "." + CTypeOperation.c_champId + " = @1", //8900, // DEBUG 30); // 30 = Id du type d'opération SANS DEPLACEMENT //int nbASupprimer = listeIntersASupprimer.CountNoLoad; CObjetDonneeAIdNumerique.DeleteAvecCascadeSansControleDoncIlFautEtreSurDeSoi(listeIntersASupprimer); result = contexte.SaveAll(true); if (!result) { result.EmpileErreur("Erreur de sauvegarde des données"); return(result); } } catch (Exception e) { result.EmpileErreur(new CErreurException(e)); } finally { CHandlerEvenementServeur.SuspendGestionnaire(false); } } return(result); }
public CResultAErreur Execute(int nIdSession, Hashtable valeursParametres) { CResultAErreur result = CResultAErreur.True; using (CContexteDonnee contexte = new CContexteDonnee(nIdSession, true, false)) { try { CHandlerEvenementServeur.SuspendGestionnaire(true); contexte.EnableTraitementsAvantSauvegarde = false; CListeObjetsDonnees lstInterventions = new CListeObjetsDonnees(contexte, typeof(CIntervention)); //*** DEBUG *** //lstInterventions.Filtre = new CFiltreData( // CIntervention.c_champId + " > @1 ", // 8500); int compteur = lstInterventions.CountNoLoad; // FIN DEBUG lstInterventions.ReadDependances("PhaseTicket.Ticket.RelationsChampsCustom"); lstInterventions.ReadDependances("RelationsIntervenants"); foreach (CIntervention inter in lstInterventions) { compteur--; CPhaseTicket phase = inter.PhaseTicket; if (phase != null) { // Copier les compte rendu pour OTA depuis l'intervention vers le ticket CTicket ticketLié = phase.Ticket; // 113 = Id du champ [Compte rendu d'Intervention modifié] string strCompteRendu = (string)inter.GetValeurChamp(113); // 114 = Id du champ [Compte rendu résumé pour OTA] ticketLié.SetValeurChamp(144, strCompteRendu); // Affecter le technicien sur les Phases de ticket CActeur acteur = null; if (phase.GetValeurChamp(146) == null) { foreach (CIntervention_Intervenant rel in inter.RelationsIntervenants) { acteur = rel.Intervenant; // 146 = Id du champ [Technicien affecté] sur Phase if (acteur != null) { phase.SetValeurChamp(146, acteur); break; } } } } } result = contexte.SaveAll(true); if (!result) { result.EmpileErreur("Erreur de sauvegarde des données"); return(result); } } catch (Exception e) { result.EmpileErreur(new CErreurException(e)); } finally { CHandlerEvenementServeur.SuspendGestionnaire(false); } } return(result); }
public CResultAErreur Execute(int nIdSession, Hashtable valeursParametres) { CResultAErreur result = CResultAErreur.True; using (CContexteDonnee contexte = new CContexteDonnee(nIdSession, true, false)) { StreamReader reader = null; try { CHandlerEvenementServeur.SuspendGestionnaire(true); contexte.EnableTraitementsAvantSauvegarde = false; // Charges tous les tickets CListeObjetsDonnees listeTicketsACharger = new CListeObjetsDonnees(contexte, typeof(CTicket)); listeTicketsACharger.ReadDependances("RelationsChampsCustom"); // Lire le CSV string strFichierImport = "c:\\TimosData\\IMPORT_JANVIER_MARS_2009.csv"; reader = new StreamReader(strFichierImport); // Lit l'entête de colonnes string strLine = reader.ReadLine(); // Lit la première ligne strLine = reader.ReadLine(); while (strLine != null) { // Pour chaque ligne du ficher string[] strChamps = strLine.Split(';'); string strNumeroTicket = strChamps[0]; string strIdQualif = strChamps[2]; // Traitement CTicket ticket = new CTicket(contexte); if (ticket.ReadIfExists(new CFiltreData( CTicket.c_champNumero + " = @1", strNumeroTicket))) { CQualificationTicket qualif = new CQualificationTicket(contexte); if (qualif.ReadIfExists(new CFiltreData( CQualificationTicket.c_champId + " = @1", Int32.Parse(strIdQualif)))) { // Affecte la valeur du champs custom 147 : Requalification ticket.SetValeurChamp(147, qualif); } } // Lit la ligne suivante strLine = reader.ReadLine(); } reader.Close(); result = contexte.SaveAll(true); if (!result) { result.EmpileErreur("Erreur de sauvegarde des données"); return(result); } } catch (Exception e) { result.EmpileErreur(new CErreurException(e)); } finally { CHandlerEvenementServeur.SuspendGestionnaire(false); if (reader != null) { reader.Close(); } } } return(result); }
public CResultAErreur Execute(int nIdSession, System.Collections.Hashtable valeursParametres) { CResultAErreur result = CResultAErreur.True; using (CContexteDonnee contexte = new CContexteDonnee(nIdSession, true, false)) { CSessionClient session = CSessionClient.GetSessionForIdSession(nIdSession); session.BeginTrans(); try { CHandlerEvenementServeur.SuspendGestionnaire(true); IDatabaseConnexion connexion = CSc2iDataServer.GetInstance().GetDatabaseConnexion(nIdSession, typeof(CVersionDonneesObjetServeur)); //Supprime les versions string strRequete = "delete from " + CVersionDonneesObjetOperation.c_nomTable; result = connexion.RunStatement(strRequete); if (!result) { return(result); } strRequete = "delete from " + CVersionDonneesObjet.c_nomTable; result = connexion.RunStatement(strRequete); if (!result) { return(result); } foreach (CInfoRelation info in CContexteDonnee.GetListeRelationsTable(CVersionDonnees.c_nomTable)) { if (info.TableParente == CVersionDonnees.c_nomTable) { strRequete = "update " + info.TableFille + " set " + info.ChampsFille[0] + "=null where " + info.ChampsFille[0] + " is not null"; result = connexion.RunStatement(strRequete); if (!result) { return(result); } } } strRequete = "delete from " + CVersionDonnees.c_nomTable; result = connexion.RunStatement(strRequete); if (!result) { return(result); } contexte.SetVersionDeTravail(-1, false); //Charge toutes les tables List <Type> typesAChamps = new List <Type>(); foreach (Type tp in CContexteDonnee.GetAllTypes()) { contexte.GetTableSafe(CContexteDonnee.GetNomTableForType(tp)); if (typeof(IObjetDonneeAChamps).IsAssignableFrom(tp)) { typesAChamps.Add(tp); } } /*Problème sur les champs custom : parfois (c'est rare, mais ça arrive * les valeurs de champs ne sont pas supprimées alors que l'entité est bien * supprimée. On ne sait pas pourquoi, mais les lignes suivantes * règlent le problème*/ foreach (Type tp in typesAChamps) { string strNomTable = CContexteDonnee.GetNomTableForType(tp); IObjetDonneeAChamps elt = (IObjetDonneeAChamps)Activator.CreateInstance(tp, new object[] { contexte }); string strTableValeurs = elt.GetNomTableRelationToChamps(); strRequete = "Update " + strTableValeurs + " set " + CSc2iDataConst.c_champIsDeleted + "=1 where " + elt.GetChampId() + " in (select " + elt.GetChampId() + " from " + strNomTable + " where " + CSc2iDataConst.c_champIsDeleted + "=1)"; result = connexion.RunStatement(strRequete); if (!result) { return(result); } } ArrayList lstTables = CContexteDonnee.GetTableOrderDelete(contexte); DataTable tableChampsCustomEnDernier = null; foreach (DataTable table in lstTables) { /* J'ai un problème avec la table Champs Custom * La requête suivante ne passe pas même directement dans SQL Server * DELETE FROM CUSTOM_FIELD WHERE (SC2I_VERSION IS NOT NULL) OR (SC2I_DELETED = 1) * Si je ne traite pas cette table, la purge se passe bien * */ if (table.TableName == CChampCustom.c_nomTable) { tableChampsCustomEnDernier = table; continue; } if (table.Columns.Contains(CSc2iDataConst.c_champIdVersion)) { strRequete = "delete from " + table.TableName + " where " + CSc2iDataConst.c_champIdVersion + " is not null or " + CSc2iDataConst.c_champIsDeleted + "=1"; result = connexion.RunStatement(strRequete); if (!result) { return(result); } } } //if (tableChampsCustomEnDernier != null) //{ // if (tableChampsCustomEnDernier.Columns.Contains(CSc2iDataConst.c_champIdVersion)) // { // strRequete = "delete from " + tableChampsCustomEnDernier.TableName + " where " + // CSc2iDataConst.c_champIdVersion + " is not null or " + // CSc2iDataConst.c_champIsDeleted + "=1"; // result = connexion.RunStatement(strRequete); // if (!result) // return result; // } //} } catch (Exception e) { result.EmpileErreur(new CErreurException(e)); } finally { CHandlerEvenementServeur.SuspendGestionnaire(false); if (!result) { session.RollbackTrans(); } else { result = session.CommitTrans(); } } } return(result); }