public bool ApplyForProject(int researcherId, int projectId)
        {
            using (ScheduleExEntities ctx = new ScheduleExEntities())
            {
                Project project = ctx.Projects.FirstOrDefault(p => p.ProjectId == projectId);
                User    user    = ctx.Users.FirstOrDefault(u => u.UserId == researcherId);

                int noOfMatches = project.Expertises.Select(ex => ex.ExpertiseId).ToList().Intersect(user.ResearcherExpertises.Select(ex => ex.ExpertiseId).ToList()).Count();

                string matchScore = string.Format("{0}/{1}", noOfMatches, project.Expertises.Count);

                if (ctx.ResearcherApprovals.Any(appr => appr.ResearcherId == researcherId && appr.ProjectId == projectId))
                {
                    return(false);
                }
                else
                {
                    ResearcherApproval ra = new ResearcherApproval();
                    ra.ApprovalStatusId     = Constants.APPROVAL_STS_APPLIED;
                    ra.ProjectId            = projectId;
                    ra.ResearcherId         = researcherId;
                    ra.HasResearcherApplied = true;
                    ra.ExpertiseMatchScore  = matchScore;
                    ctx.ResearcherApprovals.Add(ra);
                    ctx.SaveChanges();
                    return(true);
                }
            }
        }
Example #2
0
 public bool SaveInformationRequested(int availabilityId, int projectId, string informationRequested)
 {
     using (ScheduleExEntities ctx = new ScheduleExEntities())
     {
         ResearcherApproval approval = ctx.ResearcherApprovals.FirstOrDefault(ra => ra.ResearcherAvailabilityId == availabilityId && ra.ProjectId == projectId);
         approval.InfoRequested = informationRequested;
         ctx.SaveChanges();
         return(true);
     }
 }
 public bool SaveInformationRequested(int researcherId, int projectId, string informationRequested)
 {
     using (ScheduleExEntities ctx = new ScheduleExEntities())
     {
         ResearcherApproval approval = ctx.ResearcherApprovals.FirstOrDefault(ra => ra.ResearcherId == researcherId && ra.ProjectId == projectId);
         approval.InfoRequested    = informationRequested;
         approval.ApprovalStatusId = Constants.APPROVAL_STS_APPLIED;
         ctx.SaveChanges();
         return(true);
     }
 }
Example #4
0
 public bool ApplyForProject(int researcherAvailabilityId, int projectId)
 {
     using (ScheduleExEntities ctx = new ScheduleExEntities())
     {
         if (ctx.ResearcherApprovals.Any(appr => appr.ResearcherAvailabilityId == researcherAvailabilityId && (appr.ApprovalStatusId == Constants.APPROVAL_STS_APPROVED || appr.ApprovalStatusId == Constants.APPROVAL_STS_NEEDINFO || appr.ApprovalStatusId == Constants.APPROVAL_STS_BACKFORREV)))
         {
             return(false);
         }
         else
         {
             ResearcherApproval ra = new ResearcherApproval();
             ra.ApprovalStatusId         = Constants.APPROVAL_STS_NOT_STARTED;
             ra.ProjectId                = projectId;
             ra.ResearcherAvailabilityId = researcherAvailabilityId;
             ra.ResearcherId             = ctx.ResearcherAvailabilities.First(r => r.AvailabilityId == researcherAvailabilityId).ResearcherId;
             ctx.ResearcherApprovals.Add(ra);
             ctx.SaveChanges();
             return(true);
         }
     }
 }
        public ProjectDto GetProjectById(int projectId, int researcherId)
        {
            using (ScheduleExEntities ctx = new ScheduleExEntities())
            {
                Project project = ctx.Projects.First(p => p.ProjectId == projectId);

                ResearcherApproval researcherApproval = ctx.ResearcherApprovals.Where(ra => ra.ProjectId == projectId && ra.ResearcherId == researcherId).FirstOrDefault();
                ProjectDto         projectDto         = new ProjectDto();
                projectDto.ProjectId     = project.ProjectId;
                projectDto.ProjectName   = project.ProjectName;
                projectDto.Description   = project.Description;
                projectDto.State         = project.State;
                projectDto.StartDate     = project.StartDate;
                projectDto.EndDate       = project.EndDate;
                projectDto.Approved      = project.Approved;
                projectDto.Status        = (researcherApproval != null ? researcherApproval.ApprovalStatus.Status : "Available");
                projectDto.InfoRequested = (researcherApproval != null ? researcherApproval.InfoRequested : string.Empty);

                return(projectDto);
            }
        }