public Domain.Entities.Student Add(Domain.Entities.Student entity) { if (!_person.CheckIfExists(entity.Person)) { try { _person.Add(entity.Person); } catch (Exception ex) { entity.AddError(ex.Message); return(entity); } } if (VerifyStudentAlreadyEnrolled(entity)) { entity.AddError("Estudante já matriculado"); return(entity); } //TODO INCLUIR VERIFICAÇÃO SE ESTUDANTE TENTANDO SE MATRICULAR É PROFESSOR NO CURSO entity.EnrollmentID = GenerateEnrollmentID(entity); entity.Status = EEnrollmentStatus.WAITING_APROVEMENT; _studentRepository.Add(entity); //check if the person is a professor return(entity); }
private ValidationResult VerifyEnrollmentStatusChanges(EEnrollmentStatus currentStatus, Domain.Entities.Student entity) { var validationResult = new ValidationResult(); if (currentStatus != EEnrollmentStatus.WAITING_APROVEMENT && entity.Status == EEnrollmentStatus.WAITING_APROVEMENT) { entity.AddError("Não é possível configurar esta matricula como 'Aguardando Aprovação', pois ela já foi aprovada anteriormente"); return(validationResult); } if (currentStatus == EEnrollmentStatus.CANCELED && entity.Status != EEnrollmentStatus.CANCELED) { entity.AddError("Não é possível alterar o status de uma matricula cancelada."); return(validationResult); } if (StatusAvaiableToSuspension.Contains(currentStatus) && entity.Status == EEnrollmentStatus.SUSPEND) { entity.AddError($"A matrícula {entity.EnrollmentID} não pode ser cancelada pois está no status {entity.Status}"); return(validationResult); } if ((!StatusAvaiableToConclusion.Contains(currentStatus) && entity.Status == EEnrollmentStatus.COMPLETED) || !VerifyIfStudentIsAllowedToCompleteCourse(entity)) { //TODO - RETORNAR NESTE MÉTODO AS PENDÊNCIAS entity.AddError($"A matrícula {entity.EnrollmentID} não pode ser concluída pois ainda restam pendências a serem resolvidas."); return(validationResult); } return(validationResult); }