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