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