/// ////////////////////////////////////////////////////////////////////
        public CResultAErreur SerializeFiltre(C2iSerializer serializer)
        {
            InitCombos();
            int            nVersion = GetNumVersion();
            CResultAErreur result   = serializer.TraiteVersion(ref nVersion);

            if (!result)
            {
                return(result);
            }

            int nIdCategorie = -1;

            if (serializer.Mode == ModeSerialisation.Ecriture && m_cmbCategorie.ElementSelectionne is CCategorieGED)
            {
                nIdCategorie = ((CCategorieGED)m_cmbCategorie.ElementSelectionne).Id;
            }
            serializer.TraiteInt(ref nIdCategorie);
            if (serializer.Mode == ModeSerialisation.Lecture && nIdCategorie != -1)
            {
                CCategorieGED cat = new CCategorieGED(CSc2iWin32DataClient.ContexteCourant);
                if (cat.ReadIfExists(nIdCategorie))
                {
                    m_cmbCategorie.ElementSelectionne = cat;
                }
            }
            return(result);
        }
Beispiel #2
0
 //-------------------------------------------------------------------------
 private void m_arbreCategories_DragDrop(object sender, DragEventArgs e)
 {
     if (DragDataHasDocGed(e.Data))
     {
         using (CContexteDonnee ctx = CSc2iWin32DataClient.ContexteCourant.GetContexteEdition())
         {
             bool bAddCategorie       = (e.KeyState & 8) == 8;
             TreeViewHitTestInfo info = m_arbreCategories.HitTest(m_arbreCategories.PointToClient(new Point(e.X, e.Y)));
             TreeNode            node = info.Node;
             if (info != null && info.Node != null && m_arbreCategories.GetObjetInNode(info.Node) is CCategorieGED)
             {
                 CCategorieGED categorie = m_arbreCategories.GetObjetInNode(info.Node) as CCategorieGED;
                 foreach (CReferenceObjetDonnee refDoc in (CReferenceObjetDonnee[])e.Data.GetData(typeof(CReferenceObjetDonnee[])))
                 {
                     CDocumentGED doc = refDoc.GetObjet(ctx) as CDocumentGED;
                     if (doc != null)
                     {
                         if (!bAddCategorie)//Supprime les anciennes catégories
                         {
                             CListeObjetsDonnees lst = doc.RelationsCategories;
                             CObjetDonneeAIdNumerique.Delete(lst, true);
                         }
                         bool bDedans = false;
                         foreach (CRelationDocumentGED_Categorie rel in doc.RelationsCategories)
                         {
                             if (rel.Categorie.Id == categorie.Id)
                             {
                                 bDedans = true;
                                 break;
                             }
                         }
                         if (!bDedans)
                         {
                             CRelationDocumentGED_Categorie newRel = new CRelationDocumentGED_Categorie(ctx);
                             newRel.CreateNewInCurrentContexte();
                             newRel.Categorie = categorie;
                             newRel.Document  = doc;
                         }
                     }
                 }
             }
             CResultAErreur result = ctx.CommitEdit();
             if (!result)
             {
                 CFormAfficheErreur.Show(result.Erreur);
             }
             else
             {
                 InitPanelList(m_elementSelectionne);
             }
         }
     }
     HightlightCategorie(null);
 }
 public void Init(CCategorieGED categorie, int nNiveau)
 {
     m_categorie = categorie;
     CalculeLabel();
     if (nNiveau == 0)
     {
         m_panelMarge.Visible = false;
     }
     else
     {
         m_panelMarge.Visible = true;
         m_panelMarge.Width   = 22 * nNiveau;
     }
 }
        //-------------------------------------------------
        public CCategorieGED GetCatégorie(CContexteDonnee ctx)
        {
            if (m_nIdCategorieGed == null)
            {
                return(null);
            }
            CCategorieGED cat = new CCategorieGED(ctx);

            if (!cat.ReadIfExists(m_nIdCategorieGed.Value))
            {
                return(null);
            }
            return(cat);
        }
Beispiel #5
0
        //--------------------------------------------------------------------------------
        private void AddMenuCategorie(CCategorieGED cat, ToolStripItemCollection items)
        {
            ToolStripMenuItem menuCategorie = new ToolStripMenuItem(cat.Libelle);

            menuCategorie.Tag        = cat;
            menuCategorie.MouseDown += new MouseEventHandler(menuCategorie_MouseDown);
            items.Add(menuCategorie);
            if (cat.CategoriesFilles.Count > 0)
            {
                menuCategorie.ToolTipText = I.T("Right clic to affect to @1|20870", cat.Libelle);
            }
            foreach (CCategorieGED subCat in cat.CategoriesFilles)
            {
                AddMenuCategorie(subCat, menuCategorie.DropDownItems);
            }
        }
Beispiel #6
0
        /// //////////////////////////////////////////
        protected override void InitChamps()
        {
            base.InitChamps();
            m_wndAideFormule.FournisseurProprietes = ObjetEdite.Process;
            m_wndAideFormule.ObjetInterroge        = typeof(CProcess);

            m_txtFormuleCle.Init(m_wndAideFormule.FournisseurProprietes, m_wndAideFormule.ObjetInterroge);
            m_txtFormuleDescriptif.Init(m_wndAideFormule.FournisseurProprietes, m_wndAideFormule.ObjetInterroge);
            m_txtFormuleLibelle.Init(m_wndAideFormule.FournisseurProprietes, m_wndAideFormule.ObjetInterroge);
            m_txtFormuleStructure.Init(m_wndAideFormule.FournisseurProprietes, m_wndAideFormule.ObjetInterroge);

            CListeObjetsDonnees liste = new CListeObjetsDonnees(CSc2iWin32DataClient.ContexteCourant, typeof(CCategorieGED));

            m_wndListeCategories.Remplir(liste, false);
            foreach (ListViewItem item in m_wndListeCategories.Items)
            {
                CCategorieGED cat = (CCategorieGED)item.Tag;
                if (ActionExporterDonnees.ListeIdsCategoriesStockage.Contains(cat.Id))
                {
                    item.Checked = true;
                }
                else
                {
                    item.Checked = false;
                }
            }

            liste = new CListeObjetsDonnees(CSc2iWin32DataClient.ContexteCourant, typeof(sc2i.documents.C2iRapportCrystal));

            m_txtFormuleCle.Text        = ActionExporterDonnees.ExpressionCle.GetString();
            m_txtFormuleDescriptif.Text = ActionExporterDonnees.ExpressionDescriptif.GetString();
            m_txtFormuleLibelle.Text    = ActionExporterDonnees.ExpressionLibelle.GetString();

            m_radStructureParFormule.Checked = ActionExporterDonnees.UtiliserFormule;
            m_radStructurePropre.Checked     = !ActionExporterDonnees.UtiliserFormule;

            if (ActionExporterDonnees.ExpressionStructure != null)
            {
                m_txtFormuleStructure.Text = ActionExporterDonnees.ExpressionStructure.GetString();
            }
            m_panelStructure.Init(ActionExporterDonnees.StructureExport);
            m_panelExporteur.Exporteur = ActionExporterDonnees.Exporteur;


            UpdateDispoControles();
        }
Beispiel #7
0
        public CDocumentAttendu(DataSet ds, CCaracteristiqueEntite carac)
        {
            DataTable dt = ds.Tables[c_nomTable];

            if (dt == null)
            {
                return;
            }

            DataRow  row            = dt.NewRow();
            int      nIdCarac       = -1;
            string   strLibelle     = "";
            int      nIdCategorie   = -1;
            int      nbMin          = 0;
            DateTime?dateLastUpload = null;

            if (carac != null)
            {
                m_caracteristic = carac;
                row[c_champId]  = carac.Id;
                CCategorieGED categorie = CategorieGED;
                if (categorie != null)
                {
                    row[c_champLibelle]     = carac.Libelle == "" ? categorie.Libelle : carac.Libelle;
                    row[c_champIdCategorie] = categorie.Id;
                }
                else
                {
                    row[c_champLibelle]     = carac.Libelle;
                    row[c_champIdCategorie] = -1;
                }
                row[c_champNombreMin] = nbMin;
                if (dateLastUpload == null)
                {
                    row[c_champDateLastUpload] = DBNull.Value;
                }
                else
                {
                    row[c_champDateLastUpload] = dateLastUpload.Value;
                }
            }

            m_row = row;
            dt.Rows.Add(row);
        }
Beispiel #8
0
        //------------------------------------------------------------------------------
        void  menuCategorie_MouseDown(object sender, MouseEventArgs e)
        {
            ToolStripMenuItem item = sender as ToolStripMenuItem;
            CCategorieGED     cat  = item != null ? item.Tag as CCategorieGED : null;

            if (cat != null)
            {
                if (item.DropDownItems.Count == 0 || (e.Button & MouseButtons.Right) == MouseButtons.Right)
                {
                    if (item.DropDown != null)
                    {
                        item.DropDown.Close();
                    }

                    AddDoc(m_strFileToAdd, new CCategorieGED[] { cat });
                }
            }
        }
Beispiel #9
0
        //-------------------------------------------
        private void UpdateLabelDragDrop()
        {
            string strCategorie = I.T("None|20247");
            string strElement   = I.T("None|20248");

            if (m_elementSelectionne != null)
            {
                strElement = m_elementSelectionne.DescriptionElement;
            }
            CCategorieGED categorie = m_arbreCategories.ElementSelectionne as CCategorieGED;

            if (categorie != null)
            {
                strCategorie = categorie.Libelle;
            }

            m_lblInfoDragDrop.Text = I.T("Documents will be associated to element '@1' in category '@2'|20249",
                                         strElement, strCategorie);
        }
        //-----------------------------------------------------------------
        public void AppliquerFiltre()
        {
            CFiltreData filtre = null;

            if (m_cmbCategorie.ElementSelectionne is CCategorieGED)
            {
                CCategorieGED cat = (CCategorieGED)m_cmbCategorie.ElementSelectionne;
                filtre = new CFiltreDataAvance(CDocumentGED.c_nomTable,
                                               CRelationDocumentGED_Categorie.c_nomTable + "." +
                                               CCategorieGED.c_nomTable + "." +
                                               CCategorieGED.c_champCodeSystemeComplet + " LIKE @1",
                                               cat.CodeSystemeComplet + "%");
            }
            if (m_dateDebutCreation.Value != null)
            {
                filtre = CFiltreData.GetAndFiltre(filtre,
                                                  new CFiltreData(CDocumentGED.c_champDateCreation + ">=@1",
                                                                  m_dateDebutCreation.Value.DateTimeValue));
            }

            if (m_dateFinCreation.Value != null)
            {
                filtre = CFiltreData.GetAndFiltre(filtre,
                                                  new CFiltreData(CDocumentGED.c_champDateCreation + "<@1",
                                                                  CUtilDate.SetTime0(m_dateFinCreation.Value.DateTimeValue.AddDays(1))));
            }
            if (m_dateDebutModification.Value != null)
            {
                filtre = CFiltreData.GetAndFiltre(filtre,
                                                  new CFiltreData(CDocumentGED.c_champDateMAJ + ">=@1",
                                                                  m_dateDebutModification.Value.DateTimeValue));
            }
            if (m_dateFinModification.Value != null)
            {
                filtre = CFiltreData.GetAndFiltre(filtre,
                                                  new CFiltreData(CDocumentGED.c_champDateMAJ + "<@1",
                                                                  CUtilDate.SetTime0(m_dateFinModification.Value.DateTimeValue.AddDays(1))));
            }
            Filtre = filtre;
            OnAppliqueFiltre(new object(), null);
        }
        public static IEnumerable <CActionCopierMultiLocalDansGed.CInfoFichierToGed> GetInfosToAdd(
            IEnumerable <int> lstIdsCategories)
        {
            using (CFormAddMultipleToGed frm = new CFormAddMultipleToGed())
            {
                List <CCategorieGED> lstCats       = new List <CCategorieGED>();
                StringBuilder        blKeyMultiEDM = new StringBuilder();
                if (lstIdsCategories != null)
                {
                    foreach (int nId in lstIdsCategories)
                    {
                        CCategorieGED categorie = new CCategorieGED(CSc2iWin32DataClient.ContexteCourant);
                        if (categorie.ReadIfExists(nId))
                        {
                            lstCats.Add(categorie);
                            blKeyMultiEDM.Append(nId);
                            blKeyMultiEDM.Append("_");
                        }
                    }
                }
                frm.m_strKeyRepertoire = "MEDOC_" + blKeyMultiEDM.ToString();

                string strRep = C2iRegistre.GetValueInRegistreApplication("Preferences", frm.m_strKeyRepertoire, "");
                if (strRep != "")
                {
                    frm.m_browser.StartUpDirectory      = sc2i.win32.common.folderbrowser.SpecialFolders.Other;
                    frm.m_browser.StartUpDirectoryOther = strRep;
                }
                frm.Init(lstCats);
                if (frm.ShowDialog() == DialogResult.OK)
                {
                    strRep = frm.m_browser.CurrentFolderKey;
                    if (strRep != null)
                    {
                        C2iRegistre.SetValueInRegistreApplication("Preferences", frm.m_strKeyRepertoire, strRep);
                    }
                    return(frm.GetInfosToAdd());
                }
            }
            return(null);
        }
Beispiel #12
0
        /// //////////////////////////////////////////
        protected override void InitChamps()
        {
            base.InitChamps();
            m_wndAideFormule.FournisseurProprietes = ObjetEdite.Process;
            m_wndAideFormule.ObjetInterroge        = typeof(CProcess);

            m_txtFormuleCle.Init(m_wndAideFormule.FournisseurProprietes, m_wndAideFormule.ObjetInterroge);
            m_txtFormuleDescriptif.Init(m_wndAideFormule.FournisseurProprietes, m_wndAideFormule.ObjetInterroge);
            m_txtFormuleLibelle.Init(m_wndAideFormule.FournisseurProprietes, m_wndAideFormule.ObjetInterroge);
            m_txtFormuleFichier.Init(m_wndAideFormule.FournisseurProprietes, m_wndAideFormule.ObjetInterroge);
            m_txtFormuleUser.Init(m_wndAideFormule.FournisseurProprietes, m_wndAideFormule.ObjetInterroge);
            m_txtFormulePassword.Init(m_wndAideFormule.FournisseurProprietes, m_wndAideFormule.ObjetInterroge);

            CListeObjetsDonnees liste = new CListeObjetsDonnees(CSc2iWin32DataClient.ContexteCourant, typeof(CCategorieGED));

            m_wndListeCategories.Remplir(liste, false);
            List <CDbKey> listeDbKeysCategorie = new List <CDbKey>(CopierLocalDansGed.ListeDbKeysCategoriesStockage);

            foreach (ListViewItem item in m_wndListeCategories.Items)
            {
                CCategorieGED cat = (CCategorieGED)item.Tag;
                if (listeDbKeysCategorie.Contains(cat.DbKey))
                {
                    item.Checked = true;
                }
                else
                {
                    item.Checked = false;
                }
            }

            m_txtFormuleFichier.Formule  = CopierLocalDansGed.ExpressionContenu;
            m_txtFormuleCle.Text         = CopierLocalDansGed.ExpressionCle.GetString();
            m_txtFormuleDescriptif.Text  = CopierLocalDansGed.ExpressionDescriptif.GetString();
            m_txtFormuleLibelle.Text     = CopierLocalDansGed.ExpressionLibelle.GetString();
            m_txtFormuleUser.Formule     = CopierLocalDansGed.ExpressionUser;
            m_txtFormulePassword.Formule = CopierLocalDansGed.ExpressionPassword;

            m_rbtnFichier.Checked = !CopierLocalDansGed.LeContenuEstUnTexte;
            m_rbtnText.Checked    = CopierLocalDansGed.LeContenuEstUnTexte;
        }
        //-------------------------------------------------------------------
        public void InitFromContexte(CContexteFormNavigable ctx)
        {
            if (ctx == null)
            {
                return;
            }
            int nIdCategorie = (int)ctx["ID_CATEGORIE"];

            if (nIdCategorie != -1)
            {
                CCategorieGED cat = new CCategorieGED(CSc2iWin32DataClient.ContexteCourant);
                if (cat.ReadIfExists(nIdCategorie))
                {
                    m_cmbCategorie.ElementSelectionne = cat;
                }
            }
            m_dateDebutCreation.Value     = (CDateTimeEx)ctx["DATE_DEBUT_CREATION"];
            m_dateDebutModification.Value = (CDateTimeEx)ctx["DATE_DEBUT_MODIF"];
            m_dateFinCreation.Value       = (CDateTimeEx)ctx["DATE_FIN_CREATION"];
            m_dateFinModification.Value   = (CDateTimeEx)ctx["DATE_FIN_MODIF"];
        }
Beispiel #14
0
        private void m_arbreCategories_AfterSelect(object sender, TreeViewEventArgs e)
        {
            // Quand on selectionne une catégorie de GED il faut filtrer la liste de documents sur la Categorie
            CCategorieGED categorieSelectionnee = m_arbreCategories.GetObjetInNode(e.Node) as CCategorieGED;

            if (categorieSelectionnee != null)
            {
                CFiltreData filtreSurCategorie = new CFiltreDataAvance(CDocumentGED.c_nomTable,
                                                                       CRelationDocumentGED_Categorie.c_nomTable + "." +
                                                                       CCategorieGED.c_nomTable + "." +
                                                                       CCategorieGED.c_champCodeSystemeComplet + " LIKE @1",
                                                                       categorieSelectionnee.CodeSystemeComplet + "%");
                m_filtreCategories = filtreSurCategorie;

                InitPanelList(m_elementSelectionne);
            }
            else
            {
                m_filtreCategories = null;
                InitPanelList(m_elementSelectionne);
            }
        }
        private void AddCat(CCategorieGED cat, HashSet <CCategorieGED> setFaites, List <CCategorieGED> lstToAdd, int nNiveau)
        {
            if (setFaites.Contains(cat))
            {
                return;
            }
            setFaites.Add(cat);
            CControlGedCategoryForDragFile ctrl = new CControlGedCategoryForDragFile();

            m_panelCategories.Controls.Add(ctrl);
            ctrl.BringToFront();
            ctrl.Dock = DockStyle.Top;
            ctrl.Init(cat, nNiveau);
            ctrl.OnClickAddButton += new EventHandler(ctrlCat_OnClickAddButton);
            int nIndex = lstToAdd.IndexOf(cat) + 1;

            while (nIndex < lstToAdd.Count && lstToAdd[nIndex].CodeSystemeComplet.StartsWith(cat.CodeSystemeComplet))
            {
                AddCat(cat, setFaites, lstToAdd, nNiveau + 1);
                nIndex++;
            }
        }
Beispiel #16
0
        /// //////////////////////////////////////////
        protected override void InitChamps()
        {
            base.InitChamps();
            m_wndAideFormule.FournisseurProprietes = ObjetEdite.Process;
            m_wndAideFormule.ObjetInterroge        = typeof(CProcess);

            m_txtFormuleCle.Init(m_wndAideFormule.FournisseurProprietes, m_wndAideFormule.ObjetInterroge);
            m_txtFormuleDescriptif.Init(m_wndAideFormule.FournisseurProprietes, m_wndAideFormule.ObjetInterroge);
            m_txtFormuleLibelle.Init(m_wndAideFormule.FournisseurProprietes, m_wndAideFormule.ObjetInterroge);
            m_txtFormuleListeDocuments.Init(m_wndAideFormule.FournisseurProprietes, m_wndAideFormule.ObjetInterroge);
            m_txtFormuleNomFichier.Init(m_wndAideFormule.FournisseurProprietes, typeof(CDocumentGED));

            CListeObjetsDonnees liste = new CListeObjetsDonnees(CSc2iWin32DataClient.ContexteCourant, typeof(CCategorieGED));

            m_wndListeCategories.Remplir(liste, false);
            List <CDbKey> listeDbKeysCategorie = new List <CDbKey>(ZipGedDansGed.ListeDbKeysCategoriesStockage);

            foreach (ListViewItem item in m_wndListeCategories.Items)
            {
                CCategorieGED cat = (CCategorieGED)item.Tag;
                if (listeDbKeysCategorie.Contains(cat.DbKey))
                {
                    item.Checked = true;
                }
                else
                {
                    item.Checked = false;
                }
            }

            m_txtFormuleListeDocuments.Formule = ZipGedDansGed.ExpressionListeDocuments;
            m_txtFormuleCle.Text        = ZipGedDansGed.ExpressionCle.GetString();
            m_txtFormuleDescriptif.Text = ZipGedDansGed.ExpressionDescriptif.GetString();
            m_txtFormuleLibelle.Text    = ZipGedDansGed.ExpressionLibelle.GetString();
            m_txtFormuleNomFichier.Text = ZipGedDansGed.ExpressionNomsFichiers.GetString();
        }
        //-------------------------------------------------------------------
        public override CResultAErreur VerifieDonnees(CObjetDonnee objet)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                CCategorieGED cat = (CCategorieGED)objet;

                if (cat.Libelle == "")
                {
                    result.EmpileErreur(I.T("The category label cannot be empty|105"));
                }

                if (!CObjetDonneeAIdNumerique.IsUnique(cat, CCategorieGED.c_champLibelle, cat.Libelle))
                {
                    result.EmpileErreur(I.T("Another category with this label already exists|106"));
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }
            return(result);
        }
Beispiel #18
0
        /// ////////////////////////////////////////////////////////
        protected override CResultAErreur MyExecute(CContexteExecutionAction contexte)
        {
            CResultAErreur result = CResultAErreur.True;

            //Préparation du filtre
            C2iRapportCrystal rapport = new C2iRapportCrystal(contexte.ContexteDonnee);

            if (!rapport.ReadIfExists(IdEtatCrystal))
            {
                result.EmpileErreur(I.T("The report @1 does not exist|30046", IdEtatCrystal.ToString()));
                return(result);
            }
            CContexteEvaluationExpression contexteEvaluation = new CContexteEvaluationExpression(Process);
            CMultiStructureExport         multiStructure     = rapport.MultiStructure;

            if (multiStructure == null)
            {
                result.EmpileErreur(I.T("The report does not have a data structure|30044"));
                return(result);
            }
            foreach (IVariableDynamique variable in multiStructure.ListeVariables)
            {
                if (variable.IsChoixUtilisateur())
                {
                    C2iExpression expressionVariable = GetExpressionForVariableFiltre(variable.IdVariable);
                    if (expressionVariable != null)
                    {
                        result = expressionVariable.Eval(contexteEvaluation);
                        if (!result)
                        {
                            result.EmpileErreur(I.T("Error in variable '@1' assignment|30047", variable.Nom));
                            return(result);
                        }
                        multiStructure.SetValeurChamp(variable, result.Data);
                    }
                }
            }
            ReportDocument report = null;

            try
            {
                result = rapport.CreateFichierExport(multiStructure, m_formatExport, ref report);
                if (!result)
                {
                    result.EmpileErreur(I.T("Error while creating the report|30048"));
                    return(result);
                }
                CFichierLocalTemporaire fichierPDF = (CFichierLocalTemporaire)result.Data;

                #region Impression de l'état
                if (m_bImprimerEtat)
                {
                    CSessionClient            sessionClient = CSessionClient.GetSessionForIdSession(contexte.IdSession);
                    CConfigurationsImpression configuration = sessionClient.ConfigurationsImpression;
                    if (configuration.NomImprimanteSurServeur != "")
                    {
                        report.PrintOptions.PrinterName = configuration.NomImprimanteSurServeur;
                    }
                    try
                    {
                        report.PrintToPrinter(1, false, 0, 0);
                    }
                    catch (Exception e)
                    {
                        result.EmpileErreur(new CErreurException(e));
                        result.EmpileErreur(I.T("Printing error|30049"));
                        return(result);
                    }

                    /*if ( sessionClient != null )
                     * {
                     *      if ( sessionClient.GetInfoUtilisateur().IdUtilisateur == contexte.Branche.IdUtilisateur )
                     *      {
                     *              if ( sessionClient.ConfigurationsImpression.NomImprimanteSurClient != "" )
                     *                      report.PrintOptions.PrinterName = sessionClient.ConfigurationsImpression.NomImprimanteSurClient;
                     *              CServiceSurClient service = sessionClient.GetServiceSurClient ( CActionImprimerEtat.c_idServiceClientImprimerEtat );
                     *              if ( service != null )
                     *              {
                     *                      result = service.RunService ( report );
                     *              }
                     *      }
                     * }*/
                    /*
                     *                      using ( CFichierLocalTemporaire fichierRpt = new CFichierLocalTemporaire("rpt") )
                     *                      {
                     *                              fichierRpt.CreateNewFichier();
                     *                              try
                     *                              {
                     *                                      report.Refresh();
                     *                                      report.SaveAs (fichierRpt.NomFichier, ReportFileFormat.VSNetFileFormat );
                     *                              }
                     *                              catch ( Exception e )
                     *                              {
                     *                                      result.EmpileErreur ( new CErreurException ( e ) );
                     *                              }
                     *                              if ( result )
                     *                              {
                     *                                      //Stocke le fichier dans la ged pour pouvoir l'envoyer sur le client
                     *                                      using ( CProxyGED proxy = new CProxyGED ( Process.IdSession, null ) )
                     *                                      {
                     *                                              proxy.CreateNewFichier();
                     *                                              proxy.AttacheToLocal ( fichierRpt.NomFichier );
                     *
                     *                                              proxy.UpdateGed();
                     *
                     *                                              CReferenceDocument refDoc = proxy.ReferenceAttachee;
                     *                                              result = service.RunService ( refDoc );
                     *                                              if ( !result )
                     *                                              {
                     *                                                      result.EmpileErreur("Erreur à l'impression du document");
                     *                                                      return result;
                     *                                              }
                     *                                      }
                     *                              }
                     *                      }
                     *              }
                     *      }
                     * }*/
                }
                #endregion



                #region Stockage dans la ged

                if (m_bStockerGed)
                {
                    //On a notre fichier PDF, création du document
                    string strCle        = "";
                    string strDescriptif = "";
                    string strLibelle    = "";
                    result = ExpressionCle.Eval(contexteEvaluation);
                    if (result)
                    {
                        strCle = result.Data.ToString();
                    }
                    else
                    {
                        result.EmpileErreur(I.T("Document key could not be evaluated|30050"));
                        return(result);
                    }


                    result = ExpressionLibelle.Eval(contexteEvaluation);
                    if (result)
                    {
                        strLibelle = result.Data.ToString();
                    }
                    else
                    {
                        result.EmpileErreur(I.T("Document label could not be evaluated|30051"));
                        return(result);
                    }

                    result = ExpressionDescriptif.Eval(contexteEvaluation);
                    if (result)
                    {
                        strDescriptif = result.Data.ToString();
                    }
                    else
                    {
                        result.EmpileErreur(I.T("Document description could not be evaluated|30052"));
                        return(result);
                    }

                    CDocumentGED doc = new CDocumentGED(contexte.ContexteDonnee);
                    //Si la clé n'est pas nulle, cherche un document avec cette clé
                    if (strCle.Trim() != "")
                    {
                        CFiltreData filtre = new CFiltreData(CDocumentGED.c_champCle + "=@1", strCle);
                        if (!doc.ReadIfExists(filtre))
                        {
                            doc.CreateNew();
                        }
                        else
                        {
                            doc.BeginEdit();
                        }
                    }
                    else
                    {
                        doc.CreateNew();
                    }
                    doc.Libelle    = strLibelle;
                    doc.Descriptif = strDescriptif;
                    doc.Cle        = strCle;

                    ArrayList lstToCreate = (ArrayList)ListeIdsCategoriesStockage.Clone();
                    ArrayList lstToDelete = new ArrayList();
                    //Affecte les catégories
                    CListeObjetsDonnees listeCategoriesExistantes = CRelationDocumentGED_Categorie.GetRelationsCategoriesForDocument(doc);
                    foreach (CRelationDocumentGED_Categorie rel in listeCategoriesExistantes)
                    {
                        if (!lstToCreate.Contains(rel.Categorie.Id))
                        {
                            lstToDelete.Add(rel);
                        }
                        lstToCreate.Remove(rel.Categorie.Id);
                    }
                    foreach (CRelationDocumentGED_Categorie rel in lstToDelete)
                    {
                        rel.Delete();
                    }
                    foreach (int nId in lstToCreate)
                    {
                        CCategorieGED cat = new CCategorieGED(doc.ContexteDonnee);
                        if (cat.ReadIfExists(nId))
                        {
                            CRelationDocumentGED_Categorie rel = new CRelationDocumentGED_Categorie(doc.ContexteDonnee);
                            rel.CreateNewInCurrentContexte();
                            rel.Categorie = cat;
                            rel.Document  = doc;
                        }
                    }
                    CProxyGED proxy = new CProxyGED(Process.IdSession, doc.IsNew()?null:doc.ReferenceDoc);
                    proxy.AttacheToLocal(fichierPDF.NomFichier);
                    result = proxy.UpdateGed();
                    if (!result)
                    {
                        return(result);
                    }
                    doc.ReferenceDoc = (CReferenceDocument)result.Data;
                    result           = doc.CommitEdit();
                    fichierPDF.Dispose();
                    if (VariableResultat != null)
                    {
                        Process.SetValeurChamp(VariableResultat, doc);
                    }
                }
                #endregion
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }
            finally
            {
                if (report != null)
                {
                    report.Close();
                }
            }

            return(result);
        }
Beispiel #19
0
        private CResultAErreur ImportRep(CProjet projetNominal,
                                         CProjet projetCandidat,
                                         CRepertoire rep,
                                         string strPathGed)
        {
            CResultAErreur result = CResultAErreur.True;

            rep.ImportDone = true;
            strPathGed    += "\\" + rep.Nom;
            CMappingRepToDocSetup map = CMappingRepToDocSetup.GetMapping(rep.Nom);

            foreach (CFichier fichier in rep.GetChilds <CFichier>())
            {
                if (map == null)
                {
                    fichier.InfoImport = "No mapping for this directory";
                }
                else
                {
                    CObjetDonneeAIdNumerique objet = map.GetObjet(projetNominal,
                                                                  projetCandidat,
                                                                  fichier.Nom);
                    if (objet == null)
                    {
                        fichier.InfoImport = "Can not find associated objet for this file";
                    }
                    else
                    {
                        CCategorieGED cat = map.GetCatégorie(projetNominal.ContexteDonnee);
                        if (cat == null)
                        {
                            fichier.InfoImport = "Can not find EDM category for this file";
                        }
                        else
                        {
                            string       strCode = objet.IdUniversel + "/" + fichier.Nom;
                            CDocumentGED doc     = new CDocumentGED(projetNominal.ContexteDonnee);
                            if (!doc.ReadIfExists(new CFiltreData(CDocumentGED.c_champCle + "=@1", strCode)))
                            {
                                doc.CreateNewInCurrentContexte();
                            }
                            doc.Libelle = fichier.Nom;
                            doc.Cle     = strCode;
                            CReferenceDocument refDoc = new CReferenceDocument();
                            refDoc.TypeReference = new CTypeReferenceDocument(CTypeReferenceDocument.TypesReference.Fichier);
                            refDoc.NomFichier    = strPathGed + "\\" + fichier.Nom;
                            doc.ReferenceDoc     = refDoc;
                            doc.AddCategory(cat);
                            doc.AssocieA(objet);
                            fichier.SetObjetAssocie(objet);
                        }
                    }
                }
            }
            foreach (CRepertoire child in rep.GetChilds <CRepertoire>())
            {
                result = ImportRep(projetNominal, projetCandidat, child, strPathGed);
                if (!result)
                {
                    return(result);
                }
            }

            return(result);
        }
        /// //////////////////////////////////////////
        protected override void InitChamps()
        {
            base.InitChamps();
            m_wndAideFormule.FournisseurProprietes = ObjetEdite.Process;
            m_wndAideFormule.ObjetInterroge        = typeof(CProcess);

            m_txtFormuleCle.Init(m_wndAideFormule.FournisseurProprietes, m_wndAideFormule.ObjetInterroge);
            m_txtFormuleDescriptif.Init(m_wndAideFormule.FournisseurProprietes, m_wndAideFormule.ObjetInterroge);
            m_txtFormuleLibelle.Init(m_wndAideFormule.FournisseurProprietes, m_wndAideFormule.ObjetInterroge);
            m_txtFormuleVariable.Init(m_wndAideFormule.FournisseurProprietes, m_wndAideFormule.ObjetInterroge);

            CListeObjetsDonnees liste = new CListeObjetsDonnees(CSc2iWin32DataClient.ContexteCourant, typeof(CCategorieGED));

            m_wndListeCategories.Remplir(liste, false);
            foreach (ListViewItem item in m_wndListeCategories.Items)
            {
                CCategorieGED cat = (CCategorieGED)item.Tag;
                if (ActionGenererEtat.ListeIdsCategoriesStockage.Contains(cat.Id))
                {
                    item.Checked = true;
                }
                else
                {
                    item.Checked = false;
                }
            }

            liste = new CListeObjetsDonnees(CSc2iWin32DataClient.ContexteCourant, typeof(sc2i.documents.C2iRapportCrystal));
            m_comboModeleEtat.ListDonnees = liste;
            C2iRapportCrystal rapport = new C2iRapportCrystal(CSc2iWin32DataClient.ContexteCourant);

            m_tableIdVariableToFormule.Clear();
            if (rapport.ReadIfExists(ActionGenererEtat.IdEtatCrystal))
            {
                m_comboModeleEtat.SelectedValue = rapport;
                CMultiStructureExport multiStructure = rapport.MultiStructure;
                if (multiStructure != null)
                {
                    foreach (IVariableDynamique variable in multiStructure.ListeVariables)
                    {
                        m_tableIdVariableToFormule[variable.IdVariable] = ActionGenererEtat.GetExpressionForVariableFiltre(variable.IdVariable);
                    }
                }
            }
            else
            {
                m_comboModeleEtat.SelectedValue = null;
            }

            UpdateListeVariables();

            m_txtFormuleCle.Text        = ActionGenererEtat.ExpressionCle.GetString();
            m_txtFormuleDescriptif.Text = ActionGenererEtat.ExpressionDescriptif.GetString();
            m_txtFormuleLibelle.Text    = ActionGenererEtat.ExpressionLibelle.GetString();

            m_cmbFormat.DisplayMember = "Libelle";
            m_cmbFormat.ValueMember   = "Valeur";
            m_cmbFormat.DataSource    = CUtilSurEnum.GetCouplesFromEnum(typeof(TypeFormatExportCrystal));

            m_cmbFormat.SelectedValue = (int)ActionGenererEtat.FormatExport;

            m_chkStocker.Checked  = ActionGenererEtat.StockerDansLaGed;
            m_chkImprimer.Checked = ActionGenererEtat.ImprimerSurClient;
        }
        /// ////////////////////////////////////////////////////////
        protected override CResultAErreur MyExecute(CContexteExecutionAction contexte)
        {
            CResultAErreur result = CResultAErreur.True;

            if (ExpressionListeDocuments == null)
            {
                result.EmpileErreur(I.T("Document list formula is null|20051"));
                return(result);
            }
            CContexteEvaluationExpression contexteEval = new CContexteEvaluationExpression(contexte.Branche.Process);

            result = ExpressionListeDocuments.Eval(contexteEval);
            if (!result)
            {
                return(result);
            }

            IEnumerable enDocs        = result.Data as IEnumerable;
            string      strCle        = "";
            string      strDescriptif = "";
            string      strLibelle    = "";

            result = ExpressionCle.Eval(contexteEval);
            if (result)
            {
                strCle = result.Data.ToString();
            }
            else
            {
                result.EmpileErreur(I.T("Document key could not be computed|30050"));
                return(result);
            }
            if (enDocs == null)
            {
                result.EmpileErreur(I.T("Document list formul returns an incorrect value|20052"));
                return(result);
            }
            List <CDocumentGED> lstDocs = new List <CDocumentGED>();

            try
            {
                foreach (CDocumentGED doc in enDocs)
                {
                    if (doc.Cle != strCle)
                    {
                        lstDocs.Add(doc);
                    }
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
                result.EmpileErreur(I.T("Error in document list|20053"));
            }

            MemoryStream    stream    = new MemoryStream();
            ZipOutputStream zipStream = new ZipOutputStream(stream);

            zipStream.SetLevel(9);
            HashSet <string> lstNomsDocuments = new HashSet <string>();

            foreach (CDocumentGED doc in lstDocs)
            {
                CContexteEvaluationExpression ctxDoc = new CContexteEvaluationExpression(doc);
                string strNomFichier = "";
                if (ExpressionNomsFichiers != null)
                {
                    result = ExpressionNomsFichiers.Eval(ctxDoc);
                    if (result && result.Data != null)
                    {
                        strNomFichier = result.Data.ToString();
                    }
                }
                if (strNomFichier == "")
                {
                    strNomFichier = I.T("File|20054");
                }
                foreach (char c in "\"/\\*?<>|:")
                {
                    if (strNomFichier.Contains(c.ToString()))
                    {
                        strNomFichier = strNomFichier.Replace(c, '_');
                    }
                }

                if (lstNomsDocuments.Contains(strNomFichier.ToUpper()))
                {
                    int    nIndex = 1;
                    string strTmp = strNomFichier + "_" + nIndex;
                    while (lstNomsDocuments.Contains(strTmp.ToUpper()))
                    {
                        nIndex++;
                        strTmp = strNomFichier + "_" + nIndex;
                    }
                    strNomFichier = strTmp.ToUpper();
                }
                lstNomsDocuments.Add(strNomFichier.ToUpper());
                strNomFichier += "." + doc.ReferenceDoc.GetExtension();

                using (CProxyGED proxy = new CProxyGED(contexte.IdSession, doc.ReferenceDoc))
                {
                    result = proxy.CopieFichierEnLocal();
                    if (result)
                    {
                        ZipEntry entry = new ZipEntry(ZipEntry.CleanName(strNomFichier));
                        try
                        {
                            FileStream fstream = new FileStream(proxy.NomFichierLocal, FileMode.Open, FileAccess.Read);
                            entry.DateTime = DateTime.Now;
                            entry.Size     = fstream.Length;

                            int    nBufLength = 1024 * 1024;
                            byte[] buffer     = new byte[nBufLength];
                            int    nRead      = 0;

                            zipStream.PutNextEntry(entry);
                            while ((nRead = fstream.Read(buffer, 0, nBufLength)) != 0)
                            {
                                zipStream.Write(buffer, 0, nRead);
                            }
                            fstream.Close();
                            zipStream.CloseEntry();
                        }
                        catch (Exception e)
                        {
                            result.EmpileErreur(new CErreurException(e));
                            return(result);
                        }
                    }
                }
            }
            zipStream.Finish();

            stream.Seek(0, SeekOrigin.Begin);

            CSourceDocumentStream sourceDoc = new CSourceDocumentStream(stream, "zip");

            //On a notre stream zippé, création du document



            result = ExpressionLibelle.Eval(contexteEval);
            if (result)
            {
                strLibelle = result.Data.ToString();
            }
            else
            {
                result.EmpileErreur(I.T("Document label could not be computed|30051"));
                return(result);
            }

            result = ExpressionDescriptif.Eval(contexteEval);
            if (result)
            {
                strDescriptif = result.Data.ToString();
            }
            else
            {
                result.EmpileErreur(I.T("Document description could not be computed|30052"));
                return(result);
            }

            CDocumentGED docZip = new CDocumentGED(contexte.ContexteDonnee);

            //Si la clé n'est pas nulle, cherche un document avec cette clé
            if (strCle.Trim() != "")
            {
                CFiltreData filtre = new CFiltreData(CDocumentGED.c_champCle + "=@1", strCle);
                if (!docZip.ReadIfExists(filtre))
                {
                    docZip.CreateNew();
                }
                else
                {
                    docZip.BeginEdit();
                }
            }
            else
            {
                docZip.CreateNew();
            }
            docZip.Libelle    = strLibelle;
            docZip.Descriptif = strDescriptif;
            docZip.Cle        = strCle;

            List <CDbKey> lstToCreate = new List <CDbKey>(ListeDbKeysCategoriesStockage);
            List <CRelationDocumentGED_Categorie> lstToDelete = new List <CRelationDocumentGED_Categorie>();
            //Affecte les catégories
            CListeObjetsDonnees listeCategoriesExistantes = CRelationDocumentGED_Categorie.GetRelationsCategoriesForDocument(docZip);

            foreach (CRelationDocumentGED_Categorie rel in listeCategoriesExistantes)
            {
                if (!lstToCreate.Contains(rel.Categorie.DbKey))
                {
                    lstToDelete.Add(rel);
                }
                lstToCreate.Remove(rel.Categorie.DbKey);
            }
            foreach (CRelationDocumentGED_Categorie rel in lstToDelete)
            {
                rel.Delete();
            }
            foreach (CDbKey dbKey in lstToCreate)
            {
                CCategorieGED cat = new CCategorieGED(docZip.ContexteDonnee);
                if (cat.ReadIfExists(dbKey))
                {
                    CRelationDocumentGED_Categorie rel = new CRelationDocumentGED_Categorie(docZip.ContexteDonnee);
                    rel.CreateNewInCurrentContexte();
                    rel.Categorie = cat;
                    rel.Document  = docZip;
                }
            }
            result = CDocumentGED.SaveDocument(contexte.IdSession, sourceDoc, sourceDoc.TypeReference, docZip.ReferenceDoc, true);
            if (sourceDoc != null)
            {
                sourceDoc.Dispose();
            }
            zipStream.Close();
            zipStream.Dispose();

            stream.Dispose();
            if (!result)
            {
                return(result);
            }
            CReferenceDocument refDoc = result.Data as CReferenceDocument;

            docZip.ReferenceDoc = refDoc;
            result = docZip.CommitEdit();
            if (!result)
            {
                return(result);
            }
            if (VariableResultat != null)
            {
                Process.SetValeurChamp(VariableResultat, docZip);
            }
            return(result);
        }
        /// ////////////////////////////////////////////////////////
        protected override CResultAErreur MyExecute(CContexteExecutionAction contexte)
        {
            CResultAErreur result        = CResultAErreur.True;
            CSessionClient sessionClient = CSessionClient.GetSessionForIdSession(contexte.IdSession);

            if (sessionClient != null)
            {
                if (sessionClient.GetInfoUtilisateur().KeyUtilisateur == contexte.Branche.KeyUtilisateur)
                {
                    using (C2iSponsor sponsor = new C2iSponsor())
                    {
                        CServiceSurClient service        = sessionClient.GetServiceSurClient(c_idServiceSelectMultiForGed);
                        CServiceSurClient serviceGetFile = sessionClient.GetServiceSurClient(CActionCopierLocalDansGed.c_idServiceClientGetFichier);
                        if (service != null && serviceGetFile != null)
                        {
                            sponsor.Register(service);
                            sponsor.Register(serviceGetFile);
                            //Calcule la liste des ids de catégories à gérer
                            List <int> lstIds = new List <int>();
                            if (FormuleListeCategories != null)
                            {
                                CContexteEvaluationExpression contexteEval = new CContexteEvaluationExpression(contexte.Branche.Process);
                                contexteEval.AttacheObjet(typeof(CContexteDonnee), contexte.ContexteDonnee);
                                result = FormuleListeCategories.Eval(contexteEval);
                                if (!result)
                                {
                                    return(result);
                                }

                                IEnumerable lst = result.Data as IEnumerable;
                                if (lst != null)
                                {
                                    foreach (object obj in lst)
                                    {
                                        if (obj is int)
                                        {
                                            lstIds.Add((int)obj);
                                        }
                                        if (obj is CCategorieGED)
                                        {
                                            lstIds.Add(((CCategorieGED)obj).Id);
                                        }
                                    }
                                }
                            }
                            result = service.RunService(lstIds);
                            if (result && result.Data is IEnumerable)
                            {
                                List <CDocumentGED> lstDocs = new List <CDocumentGED>();
                                foreach (object obj in (IEnumerable)result.Data)
                                {
                                    CInfoFichierToGed info = obj as CInfoFichierToGed;
                                    if (info != null)
                                    {
                                        string          strContenu = info.FileFullName;
                                        CSourceDocument sourceDoc  = null;
                                        result = serviceGetFile.RunService(strContenu);
                                        if (!result)
                                        {
                                            return(result);
                                        }
                                        sourceDoc = result.Data as CSourceDocument;
                                        if (sourceDoc == null)
                                        {
                                            result.EmpileErreur(I.T("Error while retrieving file @1|20020", strContenu));
                                            return(result);
                                        }


                                        //On a notre fichier en local, création du document
                                        string strCle     = "";
                                        string strLibelle = "";
                                        info.ActiveProcess = contexte.Branche.Process;
                                        CContexteEvaluationExpression ctxEval = new CContexteEvaluationExpression(info);
                                        if (FormuleCle != null)
                                        {
                                            result = FormuleCle.Eval(ctxEval);
                                            if (result && result.Data != null)
                                            {
                                                strCle = result.Data.ToString();
                                            }
                                            else
                                            {
                                                result.EmpileErreur(I.T("Document key could not be computed|30050"));
                                                return(result);
                                            }
                                        }
                                        if (FormuleLibelleDocument != null)
                                        {
                                            result = FormuleLibelleDocument.Eval(ctxEval);
                                            if (result && result.Data != null)
                                            {
                                                strLibelle = result.Data.ToString();
                                            }
                                            else
                                            {
                                                result.EmpileErreur(I.T("Document label could not be computed|30051"));
                                                return(result);
                                            }
                                        }
                                        if (strLibelle.Length == 0)
                                        {
                                            strLibelle = info.FileName;
                                        }

                                        CObjetDonneeAIdNumerique associeA = null;
                                        if (FormuleElementAssocie != null)
                                        {
                                            result = FormuleElementAssocie.Eval(ctxEval);
                                            if (result)
                                            {
                                                associeA = result.Data as CObjetDonneeAIdNumerique;
                                            }
                                        }



                                        CDocumentGED doc = new CDocumentGED(contexte.ContexteDonnee);
                                        //Si la clé n'est pas nulle, cherche un document avec cette clé
                                        if (strCle.Trim() != "")
                                        {
                                            CFiltreData filtre = new CFiltreData(CDocumentGED.c_champCle + "=@1", strCle);
                                            if (!doc.ReadIfExists(filtre))
                                            {
                                                doc.CreateNew();
                                            }
                                            else
                                            {
                                                doc.BeginEdit();
                                            }
                                        }
                                        else
                                        {
                                            doc.CreateNew();
                                        }
                                        doc.Libelle = strLibelle;
                                        doc.Cle     = strCle;

                                        ArrayList lstToCreate = new ArrayList();
                                        lstToCreate.Add(info.EDMCategoryId);
                                        ArrayList lstToDelete = new ArrayList();
                                        //Affecte les catégories
                                        CListeObjetsDonnees listeCategoriesExistantes = CRelationDocumentGED_Categorie.GetRelationsCategoriesForDocument(doc);
                                        foreach (CRelationDocumentGED_Categorie rel in listeCategoriesExistantes)
                                        {
                                            if (!lstToCreate.Contains(rel.Categorie.Id))
                                            {
                                                lstToDelete.Add(rel);
                                            }
                                            lstToCreate.Remove(rel.Categorie.Id);
                                        }
                                        foreach (CRelationDocumentGED_Categorie rel in lstToDelete)
                                        {
                                            rel.Delete();
                                        }
                                        foreach (int nId in lstToCreate)
                                        {
                                            CCategorieGED cat = new CCategorieGED(doc.ContexteDonnee);
                                            if (cat.ReadIfExists(nId))
                                            {
                                                CRelationDocumentGED_Categorie rel = new CRelationDocumentGED_Categorie(doc.ContexteDonnee);
                                                rel.CreateNewInCurrentContexte();
                                                rel.Categorie = cat;
                                                rel.Document  = doc;
                                            }
                                        }

                                        result = CDocumentGED.SaveDocument(contexte.IdSession, sourceDoc, sourceDoc.TypeReference, doc.ReferenceDoc, true);


                                        if (!result)
                                        {
                                            return(result);
                                        }
                                        CReferenceDocument refDoc = result.Data as CReferenceDocument;
                                        doc.ReferenceDoc = refDoc;
                                        if (associeA != null)
                                        {
                                            doc.AssocieA(associeA);
                                        }
                                        result = doc.CommitEdit();
                                        if (!result)
                                        {
                                            return(result);
                                        }
                                        lstDocs.Add(doc);
                                    }
                                }
                                if (VariableResultat != null)
                                {
                                    Process.SetValeurChamp(VariableResultat, lstDocs.ToArray());
                                }
                                return(result);
                            }
                        }
                    }
                }
            }

            //Utilisateur pas accessible
            foreach (CLienAction lien in GetLiensSortantHorsErreur())
            {
                if (lien is CLienUtilisateurAbsent)
                {
                    result.Data = lien;
                    return(result);
                }
            }
            return(result);
        }
 //-------------------------------------------------------------------------
 public CFormEditionCategorieGED(CCategorieGED CategorieGED, CListeObjetsDonnees liste)
     : base(CategorieGED, liste)
 {
     // Cet appel est requis par le Concepteur Windows Form.
     InitializeComponent();
 }
Beispiel #24
0
        /// ////////////////////////////////////////////////////////
        protected override CResultAErreur MyExecute(CContexteExecutionAction contexte)
        {
            CResultAErreur result        = CResultAErreur.True;
            CSessionClient sessionClient = CSessionClient.GetSessionForIdSession(contexte.IdSession);

            if (sessionClient != null)
            {
                //TESTDBKEYOK
                if (sessionClient.GetInfoUtilisateur().KeyUtilisateur == contexte.Branche.KeyUtilisateur)
                {
                    using (C2iSponsor sponsor = new C2iSponsor())
                    {
                        CServiceSurClient             service          = sessionClient.GetServiceSurClient(c_idServiceClientGetFichier);
                        CParametresCopierLocalDansGed parametreService = new CParametresCopierLocalDansGed();
                        CFichierLocalTemporaire       fichierLocal     = null;
                        FileStream localStream = null;
                        if (service != null)
                        {
                            sponsor.Register(service);
                            //Calcule le contenu
                            CContexteEvaluationExpression contexteEval = new CContexteEvaluationExpression(contexte.Branche.Process);
                            contexteEval.AttacheObjet(typeof(CContexteDonnee), contexte.ContexteDonnee);
                            result = ExpressionContenu.Eval(contexteEval);
                            if (!result)
                            {
                                return(result);
                            }
                            parametreService.NomFichierLocal = result.Data as string;

                            if (ExpressionUser != null && (result = ExpressionUser.Eval(contexteEval)))
                            {
                                if (result.Data != null)
                                {
                                    parametreService.User = result.Data.ToString();
                                }
                            }

                            if (ExpressionPassword != null && (result = ExpressionPassword.Eval(contexteEval)))
                            {
                                if (result.Data != null)
                                {
                                    parametreService.Password = result.Data.ToString();
                                }
                            }

                            CSourceDocument sourceDoc = null;
                            if (parametreService.NomFichierLocal.ToUpper().StartsWith("FTP://"))
                            {
                                CResultAErreurType <CFichierLocalTemporaire> resFic = GetFileFromFtp(
                                    parametreService);
                                if (!resFic)
                                {
                                    result.EmpileErreur(resFic.Erreur);
                                    return(result);
                                }
                                fichierLocal = resFic.DataType;
                                localStream  = new FileStream(fichierLocal.NomFichier, FileMode.Open, FileAccess.Read);
                                sourceDoc    = new CSourceDocumentStream(localStream, "txt");
                            }
                            else if (!m_bCreerFichierTexteAPartirDeLaFormuleContenu)
                            {
                                result = service.RunService(parametreService);
                                if (!result)
                                {
                                    return(result);
                                }
                                sourceDoc = result.Data as CSourceDocument;
                                if (sourceDoc == null)
                                {
                                    result.EmpileErreur(I.T("Error while retrieving file @1|20020", parametreService.NomFichierLocal));
                                    return(result);
                                }
                            }
                            else
                            {
                                fichierLocal = new CFichierLocalTemporaire("txt");
                                localStream  = new FileStream(fichierLocal.NomFichier, FileMode.CreateNew, FileAccess.Write);
                                StreamWriter writer = new StreamWriter(localStream);
                                writer.Write(parametreService.NomFichierLocal);
                                writer.Close();
                                localStream.Close();
                                localStream = new FileStream(fichierLocal.NomFichier, FileMode.Open, FileAccess.Read);
                                sourceDoc   = new CSourceDocumentStream(localStream, "txt");
                            }
                            //On a notre fichier en local, création du document
                            string strCle        = "";
                            string strDescriptif = "";
                            string strLibelle    = "";
                            result = ExpressionCle.Eval(contexteEval);
                            if (result)
                            {
                                strCle = result.Data.ToString();
                            }
                            else
                            {
                                result.EmpileErreur(I.T("Document key could not be computed|30050"));
                                return(result);
                            }


                            result = ExpressionLibelle.Eval(contexteEval);
                            if (result)
                            {
                                strLibelle = result.Data.ToString();
                            }
                            else
                            {
                                result.EmpileErreur(I.T("Document label could not be computed|30051"));
                                return(result);
                            }

                            result = ExpressionDescriptif.Eval(contexteEval);
                            if (result)
                            {
                                strDescriptif = result.Data.ToString();
                            }
                            else
                            {
                                result.EmpileErreur(I.T("Document description could not be computed|30052"));
                                return(result);
                            }

                            CDocumentGED doc = new CDocumentGED(contexte.ContexteDonnee);
                            //Si la clé n'est pas nulle, cherche un document avec cette clé
                            if (strCle.Trim() != "")
                            {
                                CFiltreData filtre = new CFiltreData(CDocumentGED.c_champCle + "=@1", strCle);
                                if (!doc.ReadIfExists(filtre))
                                {
                                    doc.CreateNew();
                                }
                                else
                                {
                                    doc.BeginEdit();
                                }
                            }
                            else
                            {
                                doc.CreateNew();
                            }
                            doc.Libelle    = strLibelle;
                            doc.Descriptif = strDescriptif;
                            doc.Cle        = strCle;

                            List <CDbKey> lstToCreate = new List <CDbKey>(ListeDbKeysCategoriesStockage);
                            List <CRelationDocumentGED_Categorie> lstToDelete = new List <CRelationDocumentGED_Categorie>();
                            //Affecte les catégories
                            CListeObjetsDonnees listeCategoriesExistantes = CRelationDocumentGED_Categorie.GetRelationsCategoriesForDocument(doc);
                            foreach (CRelationDocumentGED_Categorie rel in listeCategoriesExistantes)
                            {
                                if (!lstToCreate.Contains(rel.Categorie.DbKey))
                                {
                                    lstToDelete.Add(rel);
                                }
                                lstToCreate.Remove(rel.Categorie.DbKey);
                            }
                            foreach (CRelationDocumentGED_Categorie rel in lstToDelete)
                            {
                                rel.Delete();
                            }
                            foreach (CDbKey dbKey in lstToCreate)
                            {
                                CCategorieGED cat = new CCategorieGED(doc.ContexteDonnee);
                                if (cat.ReadIfExists(dbKey))
                                {
                                    CRelationDocumentGED_Categorie rel = new CRelationDocumentGED_Categorie(doc.ContexteDonnee);
                                    rel.CreateNewInCurrentContexte();
                                    rel.Categorie = cat;
                                    rel.Document  = doc;
                                }
                            }
                            result = CDocumentGED.SaveDocument(contexte.IdSession, sourceDoc, sourceDoc.TypeReference, doc.ReferenceDoc, true);
                            if (sourceDoc != null)
                            {
                                sourceDoc.Dispose();
                            }
                            if (localStream != null)
                            {
                                localStream.Dispose();
                            }
                            if (fichierLocal != null)
                            {
                                fichierLocal.Dispose();
                            }


                            if (!result)
                            {
                                return(result);
                            }
                            CReferenceDocument refDoc = result.Data as CReferenceDocument;
                            doc.ReferenceDoc = refDoc;
                            result           = doc.CommitEdit();
                            if (!result)
                            {
                                return(result);
                            }
                            if (VariableResultat != null)
                            {
                                Process.SetValeurChamp(VariableResultat, doc);
                            }
                            return(result);
                        }
                    }
                }
            }
            //Utilisateur pas accessible
            foreach (CLienAction lien in GetLiensSortantHorsErreur())
            {
                if (lien is CLienUtilisateurAbsent)
                {
                    result.Data = lien;
                    return(result);
                }
            }
            return(result);
        }
 //-------------------------------------------------------------------------
 public CFormEditionCategorieGED(CCategorieGED CategorieGED)
     : base(CategorieGED)
 {
     // Cet appel est requis par le Concepteur Windows Form.
     InitializeComponent();
 }
Beispiel #26
0
        private void DragDropFiles(string[] strFichiers, CObjetDonneeAIdNumerique objet, CCategorieGED categorie)
        {
            CContexteDonnee ctxAppli = CSc2iWin32DataClient.ContexteCourant;

            using (CContexteDonnee contexte = ctxAppli.GetContexteEdition())
            {
                if (MessageBox.Show(m_lblInfoDragDrop.Text, "", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    foreach (string strFichier in strFichiers)
                    {
                        if (File.Exists(strFichier))
                        {
                            string strTitre = Path.GetFileName(strFichier);
                            string strExt   = Path.GetExtension(strFichier);
                            if (strExt.Length > 0)
                            {
                                strTitre = strTitre.Remove(strTitre.Length - strExt.Length);
                            }
                            CDocumentGED document = new CDocumentGED(contexte);
                            document.CreateNewInCurrentContexte();
                            document.Libelle = strTitre;
                            if (objet != null)
                            {
                                document.AssocieA(objet);
                            }
                            if (categorie != null)
                            {
                                CRelationDocumentGED_Categorie rel = new CRelationDocumentGED_Categorie(contexte);
                                rel.CreateNewInCurrentContexte();
                                rel.Categorie = categorie;
                                rel.Document  = document;
                            }
                            CTypeReferenceDocument typeRef = m_cmbModeStockage.SelectedValue as CTypeReferenceDocument;
                            if (typeRef == null)
                            {
                                typeRef = new CTypeReferenceDocument(CTypeReferenceDocument.TypesReference.Fichier);
                            }
                            CProxyGED proxy = new CProxyGED(contexte.IdSession, typeRef.Code);
                            proxy.AttacheToLocal(strFichier);
                            CResultAErreur result = proxy.UpdateGed();
                            document.ReferenceDoc = result.Data as CReferenceDocument;
                        }
                    }
                    contexte.CommitEdit();
                    Init(m_elementEdite);
                }
            }
            m_lblInfoDragDrop.Visible = false;
        }
Beispiel #27
0
        /// ////////////////////////////////////////////////////////
        protected override CResultAErreur ExecuteAction(CContexteExecutionAction contexte)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                // Récupère la structure par formule ou structure propore
                m_structureUtiliseeAExecution = StructureExport;

                IVariableDynamique variableProcess = AssureVariableProcessDansStructure();
                m_structureUtiliseeAExecution.SetValeurChamp(variableProcess.IdVariable, Process);
                m_structureUtiliseeAExecution.ContexteDonnee = contexte.ContexteDonnee;

                // Si la structure possede un formulaire il faut lancer le service sur le poste client
                if (m_structureUtiliseeAExecution != null && m_structureUtiliseeAExecution.Formulaire != null && m_structureUtiliseeAExecution.Formulaire.Childs.Length > 0)
                {
                    CSessionClient sessionClient = CSessionClient.GetSessionForIdSession(contexte.IdSession);
                    if (sessionClient != null)
                    {
                        //TESTDBKEYOK
                        if (sessionClient.GetInfoUtilisateur().KeyUtilisateur == contexte.Branche.KeyUtilisateur)
                        {
                            using (C2iSponsor sponsor = new C2iSponsor())
                            {
                                CServiceSurClient service = sessionClient.GetServiceSurClient(c_idServiceClientExporterDonnees);
                                if (service != null)
                                {
                                    sponsor.Register(service);

                                    result = service.RunService(this);

                                    E2iDialogResult dResult = (E2iDialogResult)result.Data;
                                    if (dResult == E2iDialogResult.Cancel)
                                    {
                                        foreach (CLienAction lien in GetLiensSortantHorsErreur())
                                        {
                                            if (lien is CLienFromDialog &&
                                                ((CLienFromDialog)lien).ResultAssocie == dResult)
                                            {
                                                result.Data = lien;
                                                return(result);
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    //Utilisateur pas accessible
                                    foreach (CLienAction lien in GetLiensSortantHorsErreur())
                                    {
                                        if (lien is CLienUtilisateurAbsent)
                                        {
                                            result.Data = lien;
                                            return(result);
                                        }
                                    }
                                }
                            }
                        }
                    }

                    else
                    {
                        //Utilisateur pas accessible
                        foreach (CLienAction lien in GetLiensSortantHorsErreur())
                        {
                            if (lien is CLienUtilisateurAbsent)
                            {
                                result.Data = lien;
                                return(result);
                            }
                        }
                    }
                }


                result = m_structureUtiliseeAExecution.GetDataSet(Exporteur.ExporteStructureOnly);
                if (!result)
                {
                    result.EmpileErreur(I.T("Error while exporting data|405"));
                    return(result);
                }

                DataSet ds = (DataSet)result.Data;

                // Fichier d'export retourné
                CFichierLocalTemporaire fichierExport = new CFichierLocalTemporaire(Exporteur.ExtensionParDefaut);
                fichierExport.CreateNewFichier();
                CDestinationExportFile dest = new CDestinationExportFile(fichierExport.NomFichier);
                result = Exporteur.Export(ds, dest);
                if (!result)
                {
                    result.EmpileErreur(I.T("Error while creating export file|406"));
                    return(result);
                }

                #region Stockage dans la ged

                CContexteEvaluationExpression contexteEvaluation = new CContexteEvaluationExpression(Process);
                //On a notre fichier export, création du document
                string strCle        = "";
                string strDescriptif = "";
                string strLibelle    = "";
                result = ExpressionCle.Eval(contexteEvaluation);
                if (result)
                {
                    strCle = result.Data.ToString();
                }
                else
                {
                    result.EmpileErreur(I.T("The document key could not be calculated|407"));
                    return(result);
                }


                result = ExpressionLibelle.Eval(contexteEvaluation);
                if (result)
                {
                    strLibelle = result.Data.ToString();
                }
                else
                {
                    result.EmpileErreur(I.T("The document label could not be calculated|408"));
                    return(result);
                }

                result = ExpressionDescriptif.Eval(contexteEvaluation);
                if (result)
                {
                    strDescriptif = result.Data.ToString();
                }
                else
                {
                    result.EmpileErreur(I.T("The document description could not be calculated|409"));
                    return(result);
                }

                CDocumentGED doc = new CDocumentGED(contexte.ContexteDonnee);
                //Si la clé n'est pas nulle, cherche un document avec cette clé
                if (strCle.Trim() != "")
                {
                    CFiltreData filtre = new CFiltreData(CDocumentGED.c_champCle + "=@1", strCle);
                    if (!doc.ReadIfExists(filtre))
                    {
                        doc.CreateNew();
                    }
                    else
                    {
                        doc.BeginEdit();
                    }
                }
                else
                {
                    doc.CreateNew();
                }
                doc.Libelle    = strLibelle;
                doc.Descriptif = strDescriptif;
                doc.Cle        = strCle;

                ArrayList lstToCreate = (ArrayList)ListeIdsCategoriesStockage.Clone();
                ArrayList lstToDelete = new ArrayList();
                //Affecte les catégories
                CListeObjetsDonnees listeCategoriesExistantes = CRelationDocumentGED_Categorie.GetRelationsCategoriesForDocument(doc);
                foreach (CRelationDocumentGED_Categorie rel in listeCategoriesExistantes)
                {
                    if (!lstToCreate.Contains(rel.Categorie.Id))
                    {
                        lstToDelete.Add(rel);
                    }
                    lstToCreate.Remove(rel.Categorie.Id);
                }
                foreach (CRelationDocumentGED_Categorie rel in lstToDelete)
                {
                    rel.Delete();
                }
                foreach (int nId in lstToCreate)
                {
                    CCategorieGED cat = new CCategorieGED(doc.ContexteDonnee);
                    if (cat.ReadIfExists(nId))
                    {
                        CRelationDocumentGED_Categorie rel = new CRelationDocumentGED_Categorie(doc.ContexteDonnee);
                        rel.CreateNewInCurrentContexte();
                        rel.Categorie = cat;
                        rel.Document  = doc;
                    }
                }
                CProxyGED proxy = new CProxyGED(Process.IdSession, doc.IsNew() ? null : doc.ReferenceDoc);
                proxy.AttacheToLocal(fichierExport.NomFichier);
                result = proxy.UpdateGed();
                if (!result)
                {
                    return(result);
                }
                doc.ReferenceDoc = (CReferenceDocument)result.Data;
                result           = doc.CommitEdit();
                fichierExport.Dispose();
                if (VariableResultat != null)
                {
                    Process.SetValeurChamp(VariableResultat, doc);
                }

                #endregion

                foreach (CLienAction lien in GetLiensSortantHorsErreur())
                {
                    if (lien is CLienFromDialog &&
                        ((CLienFromDialog)lien).ResultAssocie != E2iDialogResult.Cancel)
                    {
                        result.Data = lien;
                        return(result);
                    }
                }

                result.Data = null;
                return(result);
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }
            finally
            {
            }

            return(result);
        }
Beispiel #28
0
 //---------------------------------------------------------------------------------
 public static void Autoexec()
 {
     CDocumentGED.SetRelationsEOProvider(new CProviderRelationsEO());
     CCategorieGED.SetRelationsEOProvider(new CProviderRelationsEO());
 }