public PartialViewResult Save(FamilyRole model) { if (model.Id > 0) { var familyRole = db.FamilRoles.Where(i => i.Id == model.Id).FirstOrDefault(); familyRole.Name = model.Name; familyRole.NameFr = model.NameFr; familyRole.IsActive = model.IsActive; db.SaveChanges(User.Identity.Name); } else { db.FamilRoles.Add(model); db.SaveChanges(User.Identity.Name); } var result = db.FamilRoles.ToList(); return(PartialView("_List", result)); }
private void AddNewEntityIfNecessary(Participant participant, int[] diagnosesForParticipant, string diagnosesNamesForParticipant) { bool cityMustBeAdded = participant.City_Id < 1; bool familyMustBeAdded = participant.Family_Id < 1; bool familyRoleMustBeAdded = participant.FamilyRole_Id < 1; bool diagnosesMustBeAdded = diagnosesForParticipant != null && diagnosesForParticipant .Where(d => d < 1) // Detecter les IDs negatifs (les diagnostiques a ajouter) .Count() > 0; // Il en existe. if (cityMustBeAdded) { City newCity = new City { Name = participant.City.Name, Province = db.Provinces.Single(e => e.Id == 2), Region = db.Regions.Single(e => e.Id == 18) }; db.Cities.Add(newCity); db.SaveChanges(); participant.City = newCity; participant.City_Id = newCity.Id; } else { participant.City = db.Cities.Single(c => c.Id == participant.City_Id); } if (familyMustBeAdded) { Family newFamily = new Family { Name = participant.Family.Name }; db.Families.Add(newFamily); db.SaveChanges(); participant.Family = newFamily; participant.Family_Id = newFamily.Id; } if (familyRoleMustBeAdded) { FamilyRole newFamilyRole = new FamilyRole { Name = participant.FamilyRole.Name, NameFr = participant.FamilyRole.Name }; db.FamilRoles.Add(newFamilyRole); db.SaveChanges(); participant.FamilyRole = newFamilyRole; participant.FamilyRole_Id = newFamilyRole.Id; } if (diagnosesMustBeAdded) { Diagnosis diagnosis = null; var newDiagnosesId = diagnosesForParticipant.Where(d => d < 1).ToArray(); int[] newDiagnosesIndex = new int[newDiagnosesId.Count()]; int index; int currentDiagnoseIdToChange = 0; // Localiser les index dans la liste des IDs diagnostiques originals for (int i = 0; i < newDiagnosesId.Count(); i++) { index = Array.IndexOf(diagnosesForParticipant, newDiagnosesId[i]); newDiagnosesIndex[i] = index; } String[] newDiagnosesNames = diagnosesNamesForParticipant .Split(new string[] { "^^^" }, StringSplitOptions.None); foreach (var diagnose in newDiagnosesNames) { diagnosis = new Diagnosis { Name = diagnose, NameFr = diagnose, IsActive = true }; // Ajouter chaque nouvel diagnostique en BD db.Diagnoses.Add(diagnosis); db.SaveChanges(); // Mettre-a-jour la liste des IDs disgnotisque originals : // 1, 2, 0, -1, -2, 3 => // 1, 2, 4, 5, 6, 3 diagnosesForParticipant [newDiagnosesIndex[currentDiagnoseIdToChange]] = diagnosis.Id; currentDiagnoseIdToChange++; } } }