/// <summary> /// Given the provided grant ID, finds the corresponding Grant in the database /// and returns the instance of the grant. /// </summary> /// <param name="grantId">Referred grant ID.</param> /// <returns>Grant corresponding to given grand ID.</returns> internal Grant GetGrantById(int grantId) { Grant grant; using (ProjectTrackerContainer db = new ProjectTrackerContainer()) { grant = db.Grants.FirstOrDefault(g => g.Id == grantId); if (grant != null) { //ICollection<GrantPI> grantPIList; if (grant.ProjectId > 0) { var project = db.Project2.FirstOrDefault(p => p.Id == grant.ProjectId); if (project != null) { List <GrantPI> lstPI = new List <GrantPI>(); GrantPI projectPI = new GrantPI(); projectPI.Invests = db.Invests.FirstOrDefault(i => i.Id == project.PIId); lstPI.Add(projectPI); grant.GrantPIs.Clear(); grant.GrantPIs = lstPI; } } else { foreach (var grantPi in grant.GrantPIs) { if (grantPi.Invests == null) { grantPi.Invests = db.Invests.First(i => i.Id == grantPi.PiId); } } } grant.GrantPIs = grant.GrantPIs.ToList(); //foreach (var grantBiostat in grant.GrantBiostats) //{ // if (grantBiostat.BioStat == null) // { // grantBiostat.BioStat = db.BioStats.First(b => b.Id == grantBiostat.BiostatId); // } //} grant.GrantBiostats = grant.GrantBiostats.ToList(); } } return(grant); }
internal void SaveGrantPI(int grantId, string[] piNames, string creator, DateTime dateTimeNow) { using (ProjectTrackerContainer db = new ProjectTrackerContainer()) { var prevPIs = db.GrantPIs.Where(p => p.GrantId == grantId).ToList(); List <string> prevPILst = new List <string>(); foreach (var pi in prevPIs) { string name = pi.Invests.FirstName + ' ' + pi.Invests.LastName; prevPILst.Add(name); if (Array.IndexOf(piNames, name) < 0) //(!piNames.All(name.Contains)) { db.GrantPIs.Remove(pi); } } foreach (string piName in piNames) { string s = piName.Trim(); if (s.Length > 1) { if (Array.IndexOf(prevPILst.ToArray(), piName.Trim()) < 0) //(!prevPILst.All(piName.Contains)) { string[] names = s.Split(' '); string firstName = names[0]; string lastName = names.Length > 1 ? names[1] : string.Empty; var pi = db.Invests.FirstOrDefault(i => i.FirstName == firstName && i.LastName == lastName); if (pi != null) { GrantPI newPI = new GrantPI() { GrantId = grantId, PiId = pi.Id, Creator = creator, CreateDate = dateTimeNow }; db.GrantPIs.Add(newPI); } } } } db.SaveChanges(); } }