Esempio n. 1
0
        // If your activity returns a value, derive from CodeActivity<TResult>
        // and return the value from the Execute method.
        protected override RESULTACTION Execute(CodeActivityContext context)
        {
            RESULTACTION _result = RESULTACTION.ERREURINCONNUE;

            try
            {
                string _codeDemande   = CodeDemande.Get(context);
                string _commentaire   = Commentaire.Get(context);
                Guid   _fkIdEtape     = FKIDEtape.Get(context);
                string _matriculeUser = Matricule.Get(context);

                CODEACTION _codeAction = CodeAction.Get(context);

                DB_WORKFLOW       dbWKF       = new DB_WORKFLOW();
                CsDemandeWorkflow dmdWorkflow = dbWKF.SelectLaDemande(_codeDemande);

                if (null != dmdWorkflow)
                {
                    //Journal
                    CsJournalDemandeWorkflow jrnal        = null;
                    CsCopieDmdCircuit        etapeDemande = dbWKF.SelectAllCircuitEtapeDemandeWorkflow(dmdWorkflow.PK_ID)
                                                            .Keys.ToList()
                                                            .Where(e => e.PK_ID == _fkIdEtape)
                                                            .FirstOrDefault();

                    if (null == etapeDemande)
                    {
                        _result = RESULTACTION.ERREURINCONNUE;
                        MessageErreur.Set(context, "Aucune étape n'a été configurée avec cette ID");

                        return(_result);
                    }


                    switch (_codeAction)
                    {
                    case CODEACTION.TRANSMETTRE:
                    {
                        int precedent = dmdWorkflow.FK_IDETAPEACTUELLE;
                        dmdWorkflow.FK_IDETAPEACTUELLE   = etapeDemande.FK_IDETAPE;
                        dmdWorkflow.FK_IDETAPECIRCUIT    = etapeDemande.PK_ID;
                        dmdWorkflow.FK_IDETAPEPRECEDENTE = precedent;

                        var etapeSuivante = dbWKF.ProchaineOuPrecedenteEtape(dmdWorkflow.CODE, etapeDemande.FK_IDETAPE, etapeDemande.PK_ID, 1, false);
                        if (null != etapeSuivante.Key)
                        {
                            dmdWorkflow.FK_IDETAPESUIVANTE = etapeSuivante.Key.FK_IDETAPE;
                        }
                        else
                        {
                            //On suppose qu'on est à la dernière étape
                            dmdWorkflow.FK_IDETAPESUIVANTE = 0;
                        }

                        dbWKF.DeleteCommentaireRejet(dmdWorkflow.PK_ID);
                        CsCommentaireRejet Com = new CsCommentaireRejet()
                        {
                            CODEDEMANDE     = dmdWorkflow.CODE,
                            DATECOMMENTAIRE = DateTime.Today.Date,
                            FK_IDDEMANDE    = dmdWorkflow.PK_ID,
                            PK_ID           = Guid.NewGuid(),
                            COMMENTAIRE     = _commentaire,
                            PIECE_JOINTE    = null,
                            UTILISATEUR     = _matriculeUser
                        };
                        dbWKF.InsertCommentaireRejet(new List <CsCommentaireRejet>()
                            {
                                Com
                            });


                        dmdWorkflow.FK_IDSTATUS = (int)STATUSDEMANDE.EnAttenteValidation;
                        dmdWorkflow.DATEDERNIEREMODIFICATION = DateTime.Now;

                        _result = RESULTACTION.TRANSMISE;
                        MessageErreur.Set(context, "");

                        jrnal = new CsJournalDemandeWorkflow()
                        {
                            CODE_DEMANDE        = dmdWorkflow.CODE,
                            DATEACTION          = DateTime.Today.Date,
                            FK_IDDEMANDE        = dmdWorkflow.PK_ID,
                            PK_ID               = Guid.NewGuid(),
                            LIBELLEACTION       = "Transmission à l'étape " + etapeDemande.LIBELLEETAPE,
                            MATRICULEUSERACTION = _matriculeUser,
                            OBSERVATIONS        = string.Empty
                        };
                    }
                    break;

                    case CODEACTION.REJETER:
                    {
                        var etapeSuivante = dbWKF.ProchaineOuPrecedenteEtape(dmdWorkflow.CODE, etapeDemande.FK_IDETAPE, etapeDemande.PK_ID, -1, false);
                        if (null != etapeSuivante.Key)
                        {
                            dmdWorkflow.FK_IDETAPEPRECEDENTE = etapeSuivante.Key.FK_IDETAPE;
                        }
                        else
                        {
                            //On suppose qu'on est à la 1ere étape
                            dmdWorkflow.FK_IDETAPEPRECEDENTE = 0;
                        }

                        dbWKF.DeleteCommentaireRejet(dmdWorkflow.PK_ID);
                        CsCommentaireRejet Com = new CsCommentaireRejet()
                        {
                            CODEDEMANDE     = dmdWorkflow.CODE,
                            DATECOMMENTAIRE = DateTime.Today.Date,
                            FK_IDDEMANDE    = dmdWorkflow.PK_ID,
                            PK_ID           = Guid.NewGuid(),
                            COMMENTAIRE     = _commentaire,
                            PIECE_JOINTE    = null,
                            UTILISATEUR     = _matriculeUser
                        };
                        dbWKF.InsertCommentaireRejet(new List <CsCommentaireRejet>()
                            {
                                Com
                            });

                        int suivant = dmdWorkflow.FK_IDETAPEACTUELLE;
                        dmdWorkflow.FK_IDETAPEACTUELLE = etapeDemande.FK_IDETAPE;
                        dmdWorkflow.FK_IDETAPECIRCUIT  = etapeDemande.PK_ID;
                        dmdWorkflow.FK_IDETAPESUIVANTE = suivant;

                        dmdWorkflow.FK_IDSTATUS = (int)STATUSDEMANDE.Rejetee;
                        dmdWorkflow.DATEDERNIEREMODIFICATION = DateTime.Now;

                        _result = RESULTACTION.REJETEE;
                        MessageErreur.Set(context, "");

                        jrnal = new CsJournalDemandeWorkflow()
                        {
                            CODE_DEMANDE        = dmdWorkflow.CODE,
                            DATEACTION          = DateTime.Today.Date,
                            FK_IDDEMANDE        = dmdWorkflow.PK_ID,
                            PK_ID               = Guid.NewGuid(),
                            LIBELLEACTION       = "Rejet à l'étape " + etapeDemande.LIBELLEETAPE,
                            MATRICULEUSERACTION = _matriculeUser,
                            OBSERVATIONS        = string.Empty
                        };
                    }
                    break;
                    }

                    if (_result != RESULTACTION.ERREURINCONNUE)
                    {
                        dbWKF.UpdateDemande(new List <CsDemandeWorkflow>()
                        {
                            dmdWorkflow
                        });
                        dbWKF.SupprimerAffectationDemande(dmdWorkflow.CODE);

                        //Insertion du journal
                        dbWKF.InsertJournalDemande(new List <CsJournalDemandeWorkflow>()
                        {
                            jrnal
                        });
                    }
                }
            }
            catch (Exception ex)
            {
                _result = RESULTACTION.ERREURINCONNUE;
                MessageErreur.Set(context, ex.Message);
            }
            return(_result);
        }
Esempio n. 2
0
        // If your activity returns a value, derive from CodeActivity<TResult>
        // and return the value from the Execute method.
        protected override RESULTACTION  Execute(CodeActivityContext context)
        {
            RESULTACTION result = RESULTACTION.ERREURINCONNUE;

            string      _codeDemande = context.GetValue <string>(CodeDemande);
            string      _matricule   = context.GetValue <string>(MatriculeUser);
            DB_WORKFLOW dbWKF        = new DB_WORKFLOW();

            CsDemandeWorkflow dmd = dbWKF.SelectLaDemande(_codeDemande);

            if (null != dmd)
            {
                CODEACTION codeA = context.GetValue <CODEACTION>(CodeAction);
                KeyValuePair <CsCopieDmdCircuit, CsCopieDmdConditionBranchement> EtapeCourrante = dbWKF.RecupererEtapeCourante(dmd.CODE);
                string _actionOnDemande = string.Empty;
                if (null != EtapeCourrante.Key)
                {
                    try
                    {
                        if (codeA == CODEACTION.ANNULER)
                        {
                            //On annule la demande
                            dmd.FK_IDSTATUS  = (int)STATUSDEMANDE.Annulee;
                            _actionOnDemande = "Annulation  à l'étape " + EtapeCourrante.Key.LIBELLEETAPE;
                            result           = RESULTACTION.ANNULEE;
                        }
                        else if (codeA == CODEACTION.SUSPENDRE)
                        {
                            //On suspend la demande
                            dmd.FK_IDSTATUS  = (int)STATUSDEMANDE.Suspendue;
                            _actionOnDemande = "Suspendue à l'étape " + EtapeCourrante.Key.LIBELLEETAPE;
                            result           = RESULTACTION.SUSPENDUE;
                        }

                        dmd.DATEDERNIEREMODIFICATION = DateTime.Now;
                        //On met à jour la demande
                        bool insertion = dbWKF.UpdateDemande(new List <CsDemandeWorkflow>()
                        {
                            dmd
                        });

                        if (insertion)
                        {
                            //Maintenant on met le journal
                            CsJournalDemandeWorkflow jrnal = new CsJournalDemandeWorkflow();
                            jrnal.PK_ID               = Guid.NewGuid();
                            jrnal.CODE_DEMANDE        = dmd.CODE;
                            jrnal.FK_IDDEMANDE        = dmd.PK_ID;
                            jrnal.LIBELLEACTION       = _actionOnDemande;
                            jrnal.DATEACTION          = DateTime.Today.Date;
                            jrnal.OBSERVATIONS        = string.Empty;
                            jrnal.MATRICULEUSERACTION = _matricule;

                            dbWKF.InsertJournalDemande(new List <CsJournalDemandeWorkflow>()
                            {
                                jrnal
                            });
                            MessageErreur.Set(context, "");
                        }
                        else
                        {
                            MessageErreur.Set(context, "Une erreur interne est survenue");
                            result = RESULTACTION.ERREURINCONNUE;
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageErreur.Set(context, ex.Message);
                        result = RESULTACTION.ERREURINCONNUE;
                    }
                }
                else
                {
                    MessageErreur.Set(context, "Impossible d'effectuer une action sur une demande n'étant pas à une étape");
                    result = RESULTACTION.ERREURINCONNUE;
                }
            }
            else
            {
                MessageErreur.Set(context, "Impossible d'annuler une demande nulle");
                result = RESULTACTION.ERREURINCONNUE;
            }

            return(result);
        }