/// <summary> /// Get detail of JobApplication (as Student) /// </summary> /// <param name="jobApplicationId">JobApplication ID</param> /// <param name="userId">User ID</param> /// <returns>JobApplication DTO</returns> public async Task <JobApplicationWithJoRes> GetDetailStudentAsync(int jobApplicationId, int userId) { var jobApplication = await _context.JobApplications .Include(ja => ja.JobOffer).ThenInclude(jo => jo.Group) .Include(ja => ja.JobOffer).ThenInclude(jo => jo.Address) .FirstOrDefaultAsync(ja => ja.JobApplicationId == jobApplicationId); // jobApplication not found if (jobApplication == null) { return(null); } var user = await _context.Users .FirstOrDefaultAsync(us => us.UserId == userId); // jobApplication does not belong to student if (jobApplication.StudentId != user.StudentId) { throw new AppLogicException("Přihláška napatří studentovi"); } int freeSpaces = await _jobOfferService.GetFreeSpacesAsync(jobApplication.JobOfferId); return(new JobApplicationWithJoRes(jobApplication, freeSpaces)); }