//--------------------------------------------------------------------
 private void itemHistorique_Click(object sender, EventArgs e)
 {
     if (sender is CMenuItemAHistorique)
     {
         CHistoriqueDocumentGencod historique = ((CMenuItemAHistorique)sender).Historique;
         CDocumentGED doc = new CDocumentGED(CSc2iWin32DataClient.ContexteCourant);
         if (!doc.ReadIfExists(historique.IdDocumentGed))
         {
             CFormAlerte.Afficher(
                 I.T("The document|866") + " "
                 + historique.LibelleDocument + " " +
                 I.T("does not exist any more|867"), EFormAlerteType.Erreur);
             return;
         }
         doc.BeginEdit();
         doc.AssocieA((CObjetDonneeAIdNumerique)m_objetForGED);
         CResultAErreur result = doc.CommitEdit();
         if (!result)
         {
             CFormAlerte.Afficher(result.Erreur);
             return;
         }
         InitPanel();
     }
 }
Exemple #2
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;
        }
Exemple #3
0
        //-----------------------------------------------------------------------------------
        private CResultAErreur EnregistrePieceJointeEnGED(MessagePart pieceJointe)
        {
            CResultAErreur result = CResultAErreur.True;

            if (pieceJointe != null && pieceJointe.IsAttachment)
            {
                int    nIndex       = pieceJointe.FileName.LastIndexOf(".");
                string strExtension = "";
                if (nIndex > 0)
                {
                    strExtension = pieceJointe.FileName.Substring(nIndex + 1);
                }
                else
                {
                    strExtension = "dat";
                }

                byte[] contenuPj = pieceJointe.Body;
                Stream fluxPJ    = new MemoryStream(contenuPj);
                if (fluxPJ.Length == 0)
                {
                    return(result);
                }

                CSourceDocument srcDoc          = new CSourceDocumentStream(fluxPJ, strExtension);
                CDocumentGED    documentAttache = new CDocumentGED(ContexteDonnee);
                documentAttache.CreateNewInCurrentContexte();
                documentAttache.AssocieA(this);
                documentAttache.Libelle = pieceJointe.FileName;
                result = CDocumentGED.SaveDocument(
                    ContexteDonnee.IdSession,
                    srcDoc,
                    new CTypeReferenceDocument(CTypeReferenceDocument.TypesReference.Fichier),
                    null,
                    false);
                srcDoc.Dispose();

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

                documentAttache.ReferenceDoc = result.Data as CReferenceDocument;
            }

            return(result);
        }
Exemple #4
0
        //--------------------------------------------------------------------------------
        private void AddDoc(string strNomFichier, IEnumerable <CCategorieGED> lstCats)
        {
            CDocumentGED doc = new CDocumentGED(m_contexteDonnee);

            doc.CreateNewInCurrentContexte();
            doc.Libelle = Path.GetFileName(strNomFichier);
            foreach (CObjetDonneeAIdNumerique objet in m_wndDocuments.GetListeAssociations(m_source))
            {
                doc.AssocieA(objet);
            }
            foreach (CCategorieGED categorie in lstCats)
            {
                doc.AddCategory(categorie);
            }

            C2iWndDocumentsGed.CInfoAffectationDocumentToGed info = new C2iWndDocumentsGed.CInfoAffectationDocumentToGed(strNomFichier, m_source);
            CContexteEvaluationExpression ctx = new CContexteEvaluationExpression(info);

            foreach (CAffectationsProprietes aff in m_wndDocuments.Affectations)
            {
                CResultAErreur result = CResultAErreur.True;
                result.Data = true;
                if (aff.FormuleCondition != null)
                {
                    result = aff.FormuleCondition.Eval(ctx);
                }
                if (result && result.Data is bool && (bool)result.Data)
                {
                    result = aff.AffecteProprietes(doc, info, m_fournisseurProprietes);
                    if (!result)
                    {
                        result.EmpileErreur(I.T("Some values cannot be assigned to EDM Document"));
                        CFormAfficheErreur.Show(result.Erreur);
                    }
                }
            }

            CNouveauDoc nouveauDoc = new CNouveauDoc(doc, strNomFichier);

            m_listeDocuments.Add(doc);
            m_listeNouveauxDocs.Add(nouveauDoc);
            UpdateVisuel();
        }
Exemple #5
0
 //--------------------------------------------------------------------------
 private void m_lblDragExisting_DragDrop(object sender, DragEventArgs e)
 {
     if (m_elementEdite != null)
     {
         CReferenceObjetDonnee[] refs = e.Data.GetData(typeof(CReferenceObjetDonnee[])) as CReferenceObjetDonnee[];
         CReferenceObjetDonnee   ref1 = e.Data.GetData(typeof(CReferenceObjetDonnee)) as CReferenceObjetDonnee;
         if (ref1 != null)
         {
             List <CReferenceObjetDonnee> lst = new List <CReferenceObjetDonnee>();
             lst.Add(ref1);
             refs = lst.ToArray();
         }
         CObjetDonneeAIdNumerique obj = m_elementEdite as CObjetDonneeAIdNumerique;
         if (obj != null && refs != null)
         {
             using (CContexteDonnee ctx = new CContexteDonnee(obj.ContexteDonnee.IdSession, true, false))
             {
                 obj = obj.GetObjetInContexte(ctx) as CObjetDonneeAIdNumerique;
                 foreach (CReferenceObjetDonnee refObj in refs)
                 {
                     CDocumentGED doc = refObj.GetObjet(ctx) as CDocumentGED;
                     if (doc != null)
                     {
                         doc.AssocieA(obj);
                     }
                 }
                 CResultAErreur result = ctx.SaveAll(true);
                 if (!result)
                 {
                     CFormAlerte.Afficher(result.Erreur);
                 }
                 else
                 {
                     Init(m_elementEdite);
                 }
             }
         }
     }
 }
        /// ////////////////////////////////////////////////////////
        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);
        }
Exemple #7
0
        private void m_arbreConsultation_DragDrop(object sender, DragEventArgs e)
        {
            if (DragDataHasDocGed(e.Data))
            {
                using (CContexteDonnee ctx = CSc2iWin32DataClient.ContexteCourant.GetContexteEdition())
                {
                    bool bAddElement         = (e.KeyState & 8) == 8;
                    TreeViewHitTestInfo info = m_arbreConsultation.HitTest(m_arbreConsultation.PointToClient(new Point(e.X, e.Y)));
                    TreeNode            node = info.Node;
                    if (info != null && info.Node != null && info.Node.Tag is CNodeConsultationHierarchique &&
                        ((CNodeConsultationHierarchique)info.Node.Tag).ObjetLie is CObjetDonneeAIdNumerique)
                    {
                        CObjetDonneeAIdNumerique objetAId = ((CNodeConsultationHierarchique)info.Node.Tag).ObjetLie as CObjetDonneeAIdNumerique;
                        foreach (CReferenceObjetDonnee refDoc in (CReferenceObjetDonnee[])e.Data.GetData(typeof(CReferenceObjetDonnee[])))
                        {
                            CDocumentGED doc = refDoc.GetObjet(ctx) as CDocumentGED;
                            if (doc != null)
                            {
                                if (!bAddElement)//Supprime les anciennes catégories
                                {
                                    StringBuilder bl = new StringBuilder();
                                    foreach (CRelationElementToDocument rel in doc.RelationsElements)
                                    {
                                        if (rel.ElementLie != null)
                                        {
                                            bl.Append("-");
                                            bl.Append(rel.ElementLie.DescriptionElement);
                                            bl.Append(System.Environment.NewLine);
                                        }
                                    }
                                    if (bl.Length > 0)
                                    {
                                        if (CFormAlerte.Afficher(I.T("This operation will remove association to \r\n@1 and add an association to @2. Continue ?|20475",
                                                                     bl.ToString(),
                                                                     objetAId.DescriptionElement), EFormAlerteType.Question) == DialogResult.No)
                                        {
                                            HightlightElementDeArbre(null);
                                            e.Effect = DragDropEffects.None;
                                            return;
                                        }
                                    }


                                    CListeObjetsDonnees lst = doc.RelationsElements;
                                    CObjetDonneeAIdNumerique.Delete(lst, true);
                                }
                                doc.AssocieA(objetAId);
                            }
                        }
                    }
                    CResultAErreur result = ctx.CommitEdit();
                    if (!result)
                    {
                        CFormAlerte.Afficher(result.Erreur);
                    }
                    else
                    {
                        InitPanelList(m_elementSelectionne);
                    }
                }
            }
            HightlightElementDeArbre(null);
        }
Exemple #8
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);
        }