Example #1
0
        /// <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);
        }
Example #2
0
        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();
            }
        }