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

endpoints get laboratory

parent 6aad7c9c
No related branches found
No related tags found
No related merge requests found
Pipeline #10692 passed
......@@ -140,10 +140,9 @@ namespace Tsi1.Api.Controllers
return Ok(result.Data);
}
//QualifyEvaluationInscription(EvaluationInscriptionModifyDto evaluationInscriptionDto, int userId);
[Authorize(Roles = UserTypes.Professor)]
[HttpPost("QualifyEvaluationInscription")]
public async Task<IActionResult> SubmitLaboratory(EvaluationInscriptionModifyDto evaluationInscriptionDto)
public async Task<IActionResult> QualifyEvaluationInscription(EvaluationInscriptionModifyDto evaluationInscriptionDto)
{
var userId = int.Parse(HttpContext.User.Claims.FirstOrDefault(x => x.Type == "Id").Value);
......@@ -184,5 +183,34 @@ namespace Tsi1.Api.Controllers
return Ok(result.Data);
}
[Authorize(Roles = UserTypes.FacultyAdmin + ", " + UserTypes.Professor)]
[HttpGet("GetAllLaboratories/{evaluationId}")]
public async Task<IActionResult> GetAllLaboratories(int evaluationId)
{
var result = await _evaluationService.GetAllLaboratories(evaluationId);
if (result.HasError)
{
return BadRequest(result.Message);
}
return Ok(result.Data);
}
[Authorize(Roles = UserTypes.Student)]
[HttpGet("GetLaboratoryById/{evaluationId}")]
public async Task<IActionResult> GetLaboratoryById(int evaluationId)
{
var userId = int.Parse(HttpContext.User.Claims.FirstOrDefault(x => x.Type == "Id").Value);
var result = await _evaluationService.GetLaboratoryById(evaluationId, userId);
if (result.HasError)
{
return BadRequest(result.Message);
}
return Ok(result.Data);
}
}
}
......@@ -244,7 +244,7 @@ namespace Tsi1.BusinessLayer.DataLoad
Password = "rodriguez",
FirstName = "Marcelo",
LastName = "Rodriguez",
Email = "cmarceorp@gmail.com",
Email = "cmarcelorp@gmail.com",
Student = new Student
{
TenantId = tenantFmed.Id,
......
using System;
using System.Collections.Generic;
using System.Text;
namespace Tsi1.BusinessLayer.Dtos
{
public class SubmissionDto
{
public int Id { get; set; }
public int EvaluationId { get; set; }
public int StudentId { get; set; }
public string StudentCompleteName { get; set; }
public int FileId { get; set; }
public string FileName { get; set; }
public string FilePath { get; set; }
}
}
......@@ -22,5 +22,7 @@ namespace Tsi1.BusinessLayer.Interfaces
Task<ServiceResult<List<EvaluationInscriptionDto>>> GetAllEvaluationInscriptions(int userId, int evaluationId);
Task<ServiceResult<bool>> QualifyEvaluationInscription(EvaluationInscriptionModifyDto evaluationInscriptionDto, int userId);
Task<ServiceResult<List<SubmissionDto>>> GetAllLaboratories(int evaluationId);
Task<ServiceResult<SubmissionDto>> GetLaboratoryById(int evaluationId, int userId);
}
}
......@@ -312,6 +312,7 @@ namespace Tsi1.BusinessLayer.Services
StudentId = studentId,
Grade = 0,
IsCompleted = false,
EvaluationId = evaluationId,
};
evaluation.Submissions.Add(newSubmission);
......@@ -416,5 +417,78 @@ namespace Tsi1.BusinessLayer.Services
result.Data = (int)user.ProfessorId;
return result;
}
public async Task<ServiceResult<List<SubmissionDto>>> GetAllLaboratories(int evaluationId)
{
var result = new ServiceResult<List<SubmissionDto>>();
var submissions = await _context.Submissions
.AsNoTracking()
.Include(x => x.Student)
.ThenInclude(x => x.User)
.Include(x => x.File)
.Where(x => x.EvaluationId == evaluationId)
.ToListAsync();
var submissionDtos = new List<SubmissionDto>();
foreach (var submission in submissions)
{
var firstName = submission.Student.User.FirstName;
var lastName = submission.Student.User.LastName;
submissionDtos.Add(new SubmissionDto
{
EvaluationId = submission.EvaluationId,
FileId = submission.FileId,
FileName = submission.File.Name,
FilePath = submission.File.Path,
StudentId = submission.StudentId,
StudentCompleteName = firstName + " " + lastName,
});
}
result.Data = submissionDtos;
return result;
}
public async Task<ServiceResult<SubmissionDto>> GetLaboratoryById(int evaluationId, int userId)
{
var result = new ServiceResult<SubmissionDto>();
var validation = await this.StudentValidation(evaluationId, userId);
if (validation.HasError)
{
result.HasError = true;
result.AddMessage(validation.Message);
return result;
}
var studentId = validation.Data;
var submission = await _context.Submissions
.AsNoTracking()
.Include(x => x.Student)
.ThenInclude(x => x.User)
.Include(x => x.File)
.FirstOrDefaultAsync(x => x.EvaluationId == evaluationId && x.StudentId == studentId);
var firstName = submission.Student.User.FirstName;
var lastName = submission.Student.User.LastName;
var submissionDto = new SubmissionDto
{
EvaluationId = submission.EvaluationId,
FileId = submission.FileId,
FileName = submission.File.Name,
FilePath = submission.File.Path,
StudentId = submission.StudentId,
StudentCompleteName = firstName + " " + lastName,
};
result.Data = submissionDto;
return result;
}
}
}
......@@ -12,6 +12,10 @@ namespace Tsi1.DataLayer.Entities
public int FileId { get; set; }
public int EvaluationId { get; set; }
public Evaluation Evaluation { get; set; }
public Student Student { get; set; }
public File File { get; set; }
......
using Microsoft.EntityFrameworkCore.Migrations;
namespace Tsi1.DataLayer.Migrations
{
public partial class addevaluationtosubmmission : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_Submissions_Evaluations_EvaluationId",
table: "Submissions");
migrationBuilder.AlterColumn<int>(
name: "EvaluationId",
table: "Submissions",
nullable: false,
oldClrType: typeof(int),
oldType: "integer",
oldNullable: true);
migrationBuilder.AddForeignKey(
name: "FK_Submissions_Evaluations_EvaluationId",
table: "Submissions",
column: "EvaluationId",
principalTable: "Evaluations",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_Submissions_Evaluations_EvaluationId",
table: "Submissions");
migrationBuilder.AlterColumn<int>(
name: "EvaluationId",
table: "Submissions",
type: "integer",
nullable: true,
oldClrType: typeof(int));
migrationBuilder.AddForeignKey(
name: "FK_Submissions_Evaluations_EvaluationId",
table: "Submissions",
column: "EvaluationId",
principalTable: "Evaluations",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
}
}
}
......@@ -574,7 +574,7 @@ namespace Tsi1.DataLayer.Migrations
.HasColumnType("integer")
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
b.Property<int?>("EvaluationId")
b.Property<int>("EvaluationId")
.HasColumnType("integer");
b.Property<int>("FileId")
......@@ -1032,9 +1032,11 @@ namespace Tsi1.DataLayer.Migrations
modelBuilder.Entity("Tsi1.DataLayer.Entities.Submission", b =>
{
b.HasOne("Tsi1.DataLayer.Entities.Evaluation", null)
b.HasOne("Tsi1.DataLayer.Entities.Evaluation", "Evaluation")
.WithMany("Submissions")
.HasForeignKey("EvaluationId");
.HasForeignKey("EvaluationId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Tsi1.DataLayer.Entities.Student", "Student")
.WithMany("Submissions")
......
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