//A differenza dell'altro metodo considero solo le caratteristiche comuni al dipendente e alla figura
        //Mi devo ricalcolare ogni volta il punteggio osservato
        private List <RisultatoRicerca> Cerca(Dipendente dipendente, bool filtraRuoliNonValidi)
        {
            List <RisultatoRicerca> risultati = new List <RisultatoRicerca>();


            IEnumerable <Ruolo> tuttiRuoli = _ruoliRepos.GetAll();

            //Per ogni figura mi calcolo gli indici
            foreach (var ruolo in tuttiRuoli)
            {
                bool valido = true;
                if (filtraRuoliNonValidi)
                {
                    //Il dipendente è un CAPO, devo prendere i DIRETTORI
                    //--> sto analizzando un direttore, devo scartare i ruoli minori
                    valido = Filtri.ValidaA_MinoriUgualiDi_B(dipendente.RuoloInAzienda, ruolo);
                }

                if (valido)
                {
                    RisultatoRicerca risultato = new RisultatoRicerca();
                    risultato.Nome = ruolo.Titolo;
                    risultato.Id   = ruolo.Id;
                    risultato.PMAX_HrDiscrezionali      = _parametriConfronto.PMAX_HrDiscrezionali;
                    risultato.PMAX_HrComportamentali    = _parametriConfronto.PMAX_HrComportamentali;
                    risultato.PMAX_Comportamentali      = _parametriConfronto.PMAX_Comportamentali;
                    risultato.PMAX_TecnStrategicSupport = _parametriConfronto.PMAX_TecnStrategicSupport;
                    risultato.PMAX_TecnCompetitiveAdv   = _parametriConfronto.PMAX_TecnCompetitiveAdv;
                    risultato.PERC_SogliaFoundational   = _parametriConfronto.PERC_SogliaFoundational;


                    //Devo lavorare su un sottoinsieme delle conoscenze del dipendente
                    List <ConoscenzaCompetenza> competenzeDaConfrontare = new List <ConoscenzaCompetenza>();
                    //Mi scorro tutte le competenze possedute dal dipendente
                    foreach (var conoscenzaDip in dipendente.Conoscenze)
                    {
                        //Se è una delle competenze che servono per il confronto
                        if (ruolo.Conoscenze.Contains(conoscenzaDip, c => c.CompetenzaId))
                        {
                            //l'aggiungo alla lista su cui calcolerò il Punteggio Osservato
                            competenzeDaConfrontare.Add(conoscenzaDip);
                        }
                        //Se non è presente è come se avessi inserito la competenza con valore 0
                    }

                    //***** CORREZIONEEEE

                    /*
                     * LivelloConoscenza nulla = new LivelloConoscenza() { Titolo = "Nulla", Valore = 0};
                     *
                     * //Mi devo scorrere tutte le competenze del ruolo
                     * foreach (var conoscenzaRuolo in figura.Conoscenze)
                     * {
                     *  //Se è una di quelle competenze possedute anche dal dipendente, aggiungo il valore per il confronto
                     *  if (dipendente.Conoscenze.Contains(conoscenzaRuolo, c => c.CompetenzaId))
                     *  {
                     *      //l'aggiungo alla lista su cui calcolerò il Punteggio Osservato
                     *      competenzeDaConfrontare.Add(conoscenzaRuolo);
                     *  }
                     *  else
                     *  {
                     *      var competenzaNulla = _competenzeServices.GetCompetenze().Single(c => c.Id == conoscenzaRuolo.CompetenzaId);
                     *
                     *      //competenzeDaConfrontare.Add();
                     *  }
                     * }*/


                    //Calcolo punteggio osservato (su dipendente)
                    Punteggi po = Common.CalcolaPunteggi(competenzeDaConfrontare);

                    //Calcolo punteggio atteso
                    Punteggi pa = Common.CalcolaPunteggi(ruolo.Conoscenze);

                    //Tutte le percentuali vengono calcolate automaticamente
                    risultato.PunteggioOsservato = po;
                    risultato.PunteggioAtteso    = pa;

                    risultati.Add(risultato);

                    //Lancio l'evento di aggiornamento
                    //progressAction();
                }
            }



            return(risultati);
        }
Beispiel #2
0
        private List <RisultatoRicerca> Cerca(Ruolo ruolo, bool filtraRuoliNonValidi)
        {
            List <RisultatoRicerca> risultati = new List <RisultatoRicerca>();

            try
            {
                IEnumerable <Dipendente> dipendenti = _dipendentiRepos.GetAll();

                //Per ogni figura mi calcolo gli indici
                foreach (var dipendente in dipendenti)
                {
                    bool valido = true;

                    //Sto cercando ruolo CAPO, devo scartare i dipendenti che sono già DIRETTORI
                    if (filtraRuoliNonValidi)
                    {
                        valido = Filtri.ValidaA_MinoriUgualiDi_B(dipendente.RuoloInAzienda, ruolo);
                    }

                    if (valido)
                    {
                        RisultatoRicerca risultato = new RisultatoRicerca();
                        risultato.Nome = string.Format("#{0} - {1} {2} - {3}", dipendente.Matricola, dipendente.Cognome, dipendente.Nome, dipendente.RuoloInAzienda != null ? dipendente.RuoloInAzienda.Titolo : "");
                        risultato.Id   = dipendente.Id;
                        risultato.PMAX_HrDiscrezionali      = _parametriConfronto.PMAX_HrDiscrezionali;
                        risultato.PMAX_HrComportamentali    = _parametriConfronto.PMAX_HrComportamentali;
                        risultato.PMAX_Comportamentali      = _parametriConfronto.PMAX_Comportamentali;
                        risultato.PMAX_TecnStrategicSupport = _parametriConfronto.PMAX_TecnStrategicSupport;
                        risultato.PMAX_TecnCompetitiveAdv   = _parametriConfronto.PMAX_TecnCompetitiveAdv;
                        risultato.PERC_SogliaFoundational   = _parametriConfronto.PERC_SogliaFoundational;


                        //Devo lavorare su un sottoinsieme delle conoscenze del dipendente
                        List <ConoscenzaCompetenza> competenzeDaConfrontare = new List <ConoscenzaCompetenza>();
                        //Mi scorro tutte le competenze possedute dal ruolo
                        foreach (var conoscenzaDip in dipendente.Conoscenze)
                        {
                            //Se è una delle competenze che servono per il confronto
                            if (ruolo.Conoscenze.Contains(conoscenzaDip, c => c.CompetenzaId))
                            {
                                //l'aggiungo alla lista su cui calcolerò il Punteggio Osservato
                                competenzeDaConfrontare.Add(conoscenzaDip);
                            }
                            //Se non è presente è come se avessi inserito la competenza con valore 0
                        }

                        //Calcolo punteggio osservato (su dipendente)
                        Punteggi po = Common.CalcolaPunteggi(competenzeDaConfrontare);

                        //Calcolo punteggio atteso
                        Punteggi pa = Common.CalcolaPunteggi(ruolo.Conoscenze);

                        //Tutte le percentuali vengono calcolate automaticamente
                        risultato.PunteggioOsservato = po;
                        risultato.PunteggioAtteso    = pa;

                        risultati.Add(risultato);
                    }
                }
            }
            catch (Exception fault)
            {
                throw fault;
            }

            return(risultati);
        }