//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); }
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); }