diff --git a/Tsi1.Api/Tsi1.BusinessLayer/Services/SurveyService.cs b/Tsi1.Api/Tsi1.BusinessLayer/Services/SurveyService.cs index 3f6ba2985c3e4a3978868394898a6276097ef3d9..e10755ceb2a8124a551b06654bc58f702b8c28fb 100644 --- a/Tsi1.Api/Tsi1.BusinessLayer/Services/SurveyService.cs +++ b/Tsi1.Api/Tsi1.BusinessLayer/Services/SurveyService.cs @@ -183,7 +183,7 @@ namespace Tsi1.BusinessLayer.Services { var result = new ServiceResult<List<SurveyResponseDetailDto>>(); - var tenant = await _context.Tenants.FirstOrDefaultAsync(x => x.Id == tenantId); + var tenant = await _context.Tenants.AsNoTracking().FirstOrDefaultAsync(x => x.Id == tenantId); if (tenant == null) { @@ -192,7 +192,13 @@ namespace Tsi1.BusinessLayer.Services return result; } - var survey = await _context.Surveys.FirstOrDefaultAsync(x => x.Id == surveyId); + var survey = await _context.Surveys + .AsNoTracking() + .Include(x => x.Tenant) + .Include(x => x.SectionItem) + .ThenInclude(x => x.Section) + .ThenInclude(x => x.Course) + .FirstOrDefaultAsync(x => x.Id == surveyId); if (survey == null) { @@ -201,7 +207,9 @@ namespace Tsi1.BusinessLayer.Services return result; } - if (userType == UserTypes.Professor) + var surveyTenant = survey.IsGlobal ? survey.Tenant.Id : survey.SectionItem.Section.Course.TenantId; + + if ((userType == UserTypes.Professor || userType == UserTypes.FacultyAdmin) && tenantId != surveyTenant) { result.HasError = true; result.AddMessage(string.Format(ErrorMessages.InvalidSurvey, surveyId));