/// <summary>
 /// Devo rielaborare l'oggetto per evitare creazione di duplicati di conoscenze su DB
 /// </summary>
 /// <param name="dipendente"></param>
 public Dipendente SalvaDipendente(Dipendente d)
 {
     if (d.Id == 0)
         return CreaDipendente(d);
     else
         return AggiornaDipendente(d);
 }
        private Dipendente AggiornaDipendente(Dipendente d)
        {
            int idLivelloInsuff = reposLivelloConoscenza.Get(lc => lc.Titolo == Tipologiche.Livello.INSUFFICIENTE).Id;          

            Dipendente dipendente = reposDipendenti.Get(dip => dip.Id == d.Id);

            dipendente.Matricola = d.Matricola;
            dipendente.Cognome = d.Cognome;
            dipendente.Nome = d.Nome;
            dipendente.DataNascita = d.DataNascita;

            for (int i = 0; i < d.Conoscenze.Count; i++ )
            {
                ConoscenzaCompetenza c = d.Conoscenze.ToList()[i];

                //e salvo solo quelle diverse da 0
                if (c.LivelloConoscenzaId != idLivelloInsuff)
                {
                    ConoscenzaCompetenza conoscenza;
                    conoscenza = dipendente.Conoscenze.SingleOrDefault(con => con.CompetenzaId == c.CompetenzaId);
                    if (conoscenza == null)
                    {
                        conoscenza = new ConoscenzaCompetenza();
                        conoscenza.CompetenzaId = c.CompetenzaId;
                        dipendente.Conoscenze.Add(conoscenza);
                    }

                    conoscenza.LivelloConoscenzaId = c.LivelloConoscenzaId;
                }
                else
                {
                    //E' una di quelle che erano presenti in precedenza e sono state settate a 0 per essere cancellate
                    var conosc = dipendente.Conoscenze.SingleOrDefault(con => con.CompetenzaId == c.CompetenzaId);
                    if (conosc != null)
                    {
                        dipendente.Conoscenze.Remove(conosc);
                        var cc = reposConoscenze.Get(con => con.Id == conosc.Id);
                        reposConoscenze.Delete(cc);
                    }
                }
            }

            unitOfWork.Commit();

            return dipendente;
        }
        private Dipendente SalvaDipendente(D[] lista, string matricola, string cognome, string nome, string ruolo)
        {
            /*var reposDipendenti = ServiceLocator.Current.GetInstance<IRepository<Dipendente>>();

            var reposComp = ServiceLocator.Current.GetInstance<IRepository<Competenza>>();
            var reposLivelli = ServiceLocator.Current.GetInstance<IRepository<LivelloConoscenza>>();
            var uow = ServiceLocator.Current.GetInstance<IUnitOfWork>();*/

            /*var reposDipendenti = new BaseRepository<Dipendente>(context);
            var reposRuoli = new BaseRepository<Ruolo>(context);
            var reposComp = new BaseRepository<Competenza>(context);
            var reposLivelli = new BaseRepository<LivelloConoscenza>(context);
            var uow = new UnitOfWork(context);*/

            List<ConoscenzaCompetenza> conoscenze = new List<ConoscenzaCompetenza>();

            foreach (var elemento in lista)
            {
                ConoscenzaCompetenza conoscenza = new ConoscenzaCompetenza();
                conoscenza.Competenza = context.Competenze.Single(c => c.Titolo == elemento.t && c.TipologiaCompetenza.MacroGruppo == elemento.mg);
                conoscenza.LivelloConoscenza = context.LivelliConoscenza.Single(lc => lc.Titolo == elemento.v);
                conoscenze.Add(conoscenza);
            }

            var dipendente = new Dipendente()
            {
                Matricola = matricola,
                Cognome = cognome,
                Nome = nome,
                Conoscenze = conoscenze
            };

            dipendente.RuoloInAziendaId = context.Ruoli.Single(r => r.Titolo == ruolo).Id;


            if (context.Dipendenti.SingleOrDefault(d => d.Cognome == dipendente.Cognome) == null)
            {
                context.Dipendenti.Add(dipendente);
                //uow.Commit();
                context.SaveChanges();
            }

            return dipendente;

        }
Exemple #4
0
        public void SalvaSurveyRevisionato(int idSurveySession, List<Answer> risposte)
        {
            Dipendente dipendente = new Dipendente();            


            //List<LivelloConoscenza> livelli = dipendentiService.GetLivelliConoscenza();
            var session = GetSurveySession(idSurveySession);
            
            //Leggo le informazioni dell'utente
            UserProfile profilo = userService.GetUtente(session.User);
            dipendente.Nome = profilo.Nome;
            dipendente.Cognome = profilo.Cognome;
            dipendente.Matricola = profilo.Matricola;
            
            var domande = session.Survey.Questions;

            foreach (var r in risposte)
            {
                
                var domanda = domande.Single(d => d.Id == r.DomandaId);
                var subquestion = reposSubQuestion.Get(sb => sb.Id == r.RispostaDataId);                

                ConoscenzaCompetenza cc = new ConoscenzaCompetenza
                {
                    CompetenzaId = domanda.CompetenzaId,
                    LivelloConoscenzaId = subquestion.LivelloConoscenzaId
                };

                dipendente.Conoscenze.Add(cc);
            }

            dipendentiService.SalvaDipendente(dipendente);

            //devo segnare la surveysession come revisionata
            session.Revisionato = true;
            reposSurveySession.Update(session);
            unityOfWork.Commit();
        }
        private Dipendente CreaDipendente(Dipendente d)
        {
            int idLivelloInsuff = reposLivelloConoscenza.Get(lc => lc.Titolo == Tipologiche.Livello.INSUFFICIENTE).Id;

            //Controllo se l'id è uguale a 0
            //Ricreo l'oggetto
                        
            Dipendente dipendente = new Dipendente();
            dipendente.Matricola = d.Matricola;
            dipendente.Cognome = d.Cognome;
            dipendente.Nome = d.Nome;
            dipendente.DataNascita = d.DataNascita;
            
            dipendente.Conoscenze = new List<ConoscenzaCompetenza>();

            //Mi scorro tutte le conoscenze
            foreach (var c in d.Conoscenze)
            {
                //e salvo solo quelle diverse da 0
                //if (c.LivelloConoscenza.Titolo != Tipologiche.Livello.INSUFFICIENTE)
                if (c.LivelloConoscenzaId != idLivelloInsuff)
                {
                    ConoscenzaCompetenza conoscenza = new ConoscenzaCompetenza();

                    conoscenza.LivelloConoscenzaId = c.LivelloConoscenzaId;
                    conoscenza.CompetenzaId = c.CompetenzaId;
                    dipendente.Conoscenze.Add(conoscenza);
                }
            }

            
            reposDipendenti.Add(dipendente);
            unitOfWork.Commit();

            return dipendente;
        }