Skip to content
Snippets Groups Projects
Commit cf277878 authored by esantangelo's avatar esantangelo
Browse files

commit

parent c83a1b17
No related branches found
No related tags found
1 merge request!45commit
......@@ -69,6 +69,22 @@ namespace Tsi1.Api.Controllers
return Ok(result.Data);
}
[Authorize(Roles = UserTypes.FacultyAdmin)]
[HttpGet("GetAllStudentCourseResults")]
public async Task<IActionResult> GetAllStudentCourseResults()
{
var tenantId = int.Parse(HttpContext.User.Claims.FirstOrDefault(x => x.Type == "TenantId").Value);
var result = await _studentCourseResultService.GetAllLastStudentCourseResults(tenantId);
if (result.HasError)
{
return BadRequest(result.Message);
}
return Ok(result.Data);
}
[Authorize(Roles = UserTypes.FacultyAdmin + ", " + UserTypes.Professor)]
[HttpPost("Create")]
......
using System;
using System.Collections.Generic;
using System.Text;
namespace Tsi1.BusinessLayer.Dtos
{
public class StudentCourseResultQuantityDto
{
public int CourseId { get; set; }
public string CourseName { get; set; }
public int Total{ get; set; }
public int Approved { get; set; }
public int Disapproved { get; set; }
}
}
......@@ -18,5 +18,6 @@ namespace Tsi1.BusinessLayer.Interfaces
Task<ServiceResult<StudentCourseResultPreviewDto>> GetMyLastResult(int courseId, int userId);
Task<ServiceResult<List<StudentCourseResultPreviewDto>>> GetLastStudentCourseResults(int courseId, int userId);
Task<ServiceResult<List<StudentCourseResultQuantityDto>>> GetAllLastStudentCourseResults(int tenantId);
}
}
......@@ -303,5 +303,55 @@ namespace Tsi1.BusinessLayer.Services
result.Data = (int)user.StudentId;
return result;
}
public async Task<ServiceResult<List<StudentCourseResultQuantityDto>>> GetAllLastStudentCourseResults(int tenantId)
{
var result = new ServiceResult<List<StudentCourseResultQuantityDto>>();
var courses = await _context.Courses.Where(x => x.TenantId == tenantId).ToListAsync();
if (courses == null)
{
return result;
}
var studentCourseResultDtos = new List<StudentCourseResultQuantityDto>();
foreach (var course in courses)
{
var studentIds = await _context.StudentCourses
.AsNoTracking()
.Where(x => x.CourseId == course.Id)
.Select(x => x.StudentId)
.ToListAsync();
var auxStudentCourseResults = await _context.StudentCourseResults
.AsNoTracking()
.Where(x => x.CourseId == course.Id && studentIds.Contains(x.StudentId))
.ToListAsync();
var studentCourseResults = auxStudentCourseResults.GroupBy(x => new { x.StudentId, x.CourseId })
.Select(x => x.OrderByDescending(g => g.Date).First())
.ToList();
var total = studentCourseResults.Count();
var approved = studentCourseResults.Where(x => x.Result >= CourseApproval.MinimumApproval).Count();
var disapproved = total - approved;
var studentCourseResultDto = new StudentCourseResultQuantityDto
{
CourseId = course.Id,
CourseName = course.Name,
Total = total,
Approved = approved,
Disapproved = disapproved,
};
studentCourseResultDtos.Add(studentCourseResultDto);
}
result.Data = studentCourseResultDtos;
return result;
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment