Skip to content

Commit

Permalink
Created CoursesFinalInscriptionsClose Method (#125)
Browse files Browse the repository at this point in the history
Crated Close Final Modal
  • Loading branch information
MatiasMercado committed Feb 6, 2017
1 parent 8075a8d commit af5239b
Show file tree
Hide file tree
Showing 12 changed files with 172 additions and 9 deletions.
2 changes: 1 addition & 1 deletion app/scripts/controllers/courses/CoursesShowCtrl.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
'use strict';

define(['paw','services/Courses','services/Paths', 'controllers/modals/DeleteCorrelativeController', 'controllers/modals/DeleteFinalController'], function(paw) {
define(['paw','services/Courses','services/Paths', 'controllers/modals/DeleteCorrelativeController', 'controllers/modals/DeleteFinalController', 'controllers/modals/CloseFinalController'], function(paw) {
paw.controller('CoursesShowCtrl', ['$routeParams', 'Courses', '$log', 'Paths', function($routeParams, Courses, $log, Paths) {
var _this = this;
var courseId = $routeParams.courseId;
Expand Down
73 changes: 73 additions & 0 deletions app/scripts/controllers/modals/CloseFinalController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
'use strict';

define(['paw', 'services/modalFactory', 'services/Courses', 'services/flashMessages'], function(paw) {
paw.controller('CloseFinalController',
['modalFactory', '$log', 'Courses', '$route', 'flashMessages',
function (modalFactory, $log, Courses, $route, flashMessages) {
var modalTemplateUrl = 'views/modals/close_final.html';
var onSuccess = function(result) {
Courses.closeFinalInscription(result.courseId, result.id)
.then(function(response) {
flashMessages.setSuccess('i18nCloseFinalSuccess');
$route.reload();
}, function(response) {
flashMessages.setError('i18nFormErrors');
$log.warn('[ERROR] - Response: ' + JSON.stringify(response));
$route.reload();
});
};

var onFailure = function(msg) {
$log.info(msg);
};
this.open = function (size, title, courseId, courseName, finalExamDate, id) {
var resolve = getResolve(title, courseId, courseName, finalExamDate, id);
modalFactory.create(size, 'CloseFinalModalInstanceController', modalTemplateUrl, resolve, onSuccess, onFailure);
};
}]);

paw.controller('CloseFinalModalInstanceController',
function($uibModalInstance, title, courseId, courseName, finalExamDate, id) {
this.title = title;
this.courseId = courseId;
this.courseName = courseName;
this.finalExamDate = finalExamDate;
this.id = id;

var _this = this;

this.ok = function () {
$uibModalInstance.close({
courseId: courseId,
courseName: courseName,
finalExamDate: finalExamDate,
id: id
});
};

this.cancel = function () {
$uibModalInstance.dismiss('Close Final modal dismissed at: ' + new Date());
};
});

function getResolve(title, courseId, courseName, finalExamDate, id) {
return {
title: function() {
return title;
},
courseId: function () {
return courseId;
},
courseName: function () {
return courseName;
},
finalExamDate: function () {
return finalExamDate;
},
id: function() {
return id;
}
};
};
}
);
2 changes: 2 additions & 0 deletions app/scripts/i18n/translations.es.js
Original file line number Diff line number Diff line change
Expand Up @@ -196,9 +196,11 @@ define([], function() {
i18nModalCorrelativeId: 'Código de la correlativa',
i18nModalStudentFullName: 'Nombre del alumno',
i18nModalDeleteFinal: 'Eliminar examen final',
i18nModalCloseFinal: 'Cerrar Final',

// Flash messages
i18nEditSuccess: 'La edición ha sido exitosa',
i18nCloseFinalSuccess: 'Se ha cerrado la inscripcion a final',
i18nDeleteFinalSuccess: 'Se ha eliminado el examen final',
i18nDeleteCorrelativeSuccess: 'Se ha eliminado la correlatividad',
i18nAddCorrelativeSuccess: 'Se ha agregado la correlatividad',
Expand Down
4 changes: 4 additions & 0 deletions app/scripts/services/Courses.js
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,10 @@ define(['paw', 'services/AuthenticatedRestangular', 'services/navDataService'],
return rest.one('courses', courseId).one('finalInscriptions', id).customDELETE();
};

rest.closeFinalInscription = function(courseId, id) {
return rest.one('courses', courseId).one('finalInscriptions', id).all('close').customPOST();
};

rest.remove = function(course) {
return course.remove();
};
Expand Down
5 changes: 5 additions & 0 deletions app/views/courses/show.html
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,11 @@ <h3 translate='i18nFinalExams' class='page-sub-header'></h3>
<span class='fa fa-info-circle' aria-hidden='true'></span>
<span translate='i18nInformation'></span>
</a>
<a class='btn btn-info' role='button' ng-controller='CloseFinalController as modalController'
ng-click="modalController.open('md', 'i18nFinalDelete', controller.course.courseId, controller.course.name, inscription.finalExamDate, inscription.id)">
<span class='fa fa-trash' aria-hidden='true'></span>
<span translate='i18nModalCloseFinal'></span>
</a>
<a class='btn btn-danger' role='button' ng-controller='DeleteFinalController as modalController'
ng-click="modalController.open('md', 'i18nFinalDelete', controller.course.courseId, controller.course.name, inscription.finalExamDate, inscription.id)">
<span class='fa fa-trash' aria-hidden='true'></span>
Expand Down
18 changes: 18 additions & 0 deletions app/views/modals/close_final.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<div class='modal-header'>
<h4 class='modal-title' id='modal-title' translate='i18nModalCloseFinal'></h4>
</div>
<div class='modal-body'>
<p class='break-words'>
<span class='bold' translate='i18nModalCourseId'></span>: {{ controller.courseId }}
</p>
<p class='break-words'>
<span class='bold' translate='i18nModalCourseName'></span>: {{ controller.courseName }}
</p>
<p class='break-words'>
<span class='bold' translate='i18nFinalExamDate'></span>: {{ controller.finalExamDate | date: 'dd/MM/yyyy HH:mm'}}
</p>
</div>
<div class='modal-footer'>
<button class='btn btn-default' type='button' ng-click="controller.cancel()" translate='i18nCancel'></button>
<button class='btn btn-info' type='button' ng-click='controller.ok()' translate='i18nConfirm'></button>
</div>
Original file line number Diff line number Diff line change
Expand Up @@ -188,4 +188,9 @@ public interface CourseDao {
*/
void deleteFinalInscription(int finalInscriptionId);

/**
* Sets the final inscription state to close
* @param finalInscriptionId the final inscription's id
*/
void closeFinalInscription(int finalInscriptionId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ public interface CourseService {
int addFinalInscription(FinalInscription finalInscription);

/**
* Get the student's inscribed in a FinalInscription
* Get the student's enrolled in a FinalInscription
* @param id The FinalInscription's id
* @return The list of students
*/
Expand All @@ -190,4 +190,11 @@ public interface CourseService {
* @param finalInscriptionId The final inscription's id
*/
void deleteFinalInscription(int finalInscriptionId);


/**
* Sets the final inscription state to close
* @param finalInscriptionId the final inscription's Id
*/
void closeFinalInscription(int finalInscriptionId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -288,9 +288,7 @@ public FinalInscription getFinalInscription(final int id) {
@Override
public int addFinalInscription(final FinalInscription finalInscription) {
final Session session = em.unwrap(Session.class);

session.save(finalInscription);

return finalInscription.getId();
}

Expand All @@ -300,6 +298,15 @@ public void deleteFinalInscription(final int finalInscriptionId) {
em.remove(finalInscription);
}

@Override
public void closeFinalInscription(int finalInscriptionId) {
final FinalInscription finalInscription = getFinalInscription(finalInscriptionId);
final Session session = em.unwrap(Session.class);

finalInscription.setState(FinalInscription.FinalInscriptionState.CLOSED);
session.save(finalInscription);
}

//QueryFilter

private static class QueryFilter {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -296,4 +296,9 @@ public Set<Student> getFinalStudents(int id) {
return set;
}

@Transactional
@Override
public void closeFinalInscription(final int finalInscriptionId) {
courseDao.closeFinalInscription(finalInscriptionId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -400,18 +400,26 @@ public Response coursesFinalInscriptionsDestroy(
@Path("/{courseId}/finalInscriptions/{finalInscriptionId}/qualify")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response courseFinalInscriptionQualify(@Pattern(regexp = "\\d{2}\\.\\d{2}") @PathParam("courseId") final String courseId,
public Response courseFinalInscriptionsQualify(@Pattern(regexp = "\\d{2}\\.\\d{2}") @PathParam("courseId") final String courseId,
@PathParam("finalInscriptionId") final int finalInscriptionId,
@Valid List<QualifyStudent> qualifiedStudents) {
if (cs.getByCourseID(courseId) == null || cs.getFinalInscription(finalInscriptionId) == null) {
if (cs.getByCourseID(courseId) == null ){
return status(Status.NOT_FOUND).build();
}

final FinalInscription finalInscription = cs.getFinalInscription(finalInscriptionId);
if(finalInscription == null){
return status(Status.NOT_FOUND).build();
}

if (!cs.getCourseFinalInscriptions(courseId).contains(finalInscription)) {
return status(Status.NOT_FOUND).build();
}

if(finalInscription.isOpen()){
return status(Status.CONFLICT).build();
}

final HTTPResponseList httpStatusList = new HTTPResponseList(qualifiedStudents.size());

for (final QualifyStudent qualifyStudent : qualifiedStudents) {
Expand All @@ -425,6 +433,35 @@ public Response courseFinalInscriptionQualify(@Pattern(regexp = "\\d{2}\\.\\d{2}
}
}

if(cs.getFinalStudents(finalInscriptionId).isEmpty()){
cs.deleteFinalInscription(finalInscriptionId);
}

return status(207).entity(httpStatusList).build();
}


@POST
@Path("/{courseId}/finalInscriptions/{finalInscriptionId}/close")
public Response coursesFinalInscriptionsClose(@Pattern(regexp = "\\d{2}\\.\\d{2}") @PathParam("courseId") final String courseId,
@PathParam("finalInscriptionId") final int finalInscriptionId) {

if (cs.getByCourseID(courseId) == null ){
return status(Status.NOT_FOUND).build();
}

final FinalInscription finalInscription = cs.getFinalInscription(finalInscriptionId);
if(finalInscription == null){
return status(Status.NOT_FOUND).build();
}

if (!cs.getCourseFinalInscriptions(courseId).contains(finalInscription)) {
return status(Status.NOT_FOUND).build();
}

cs.closeFinalInscription(finalInscriptionId);

return noContent().build();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -374,7 +374,7 @@ public Response studentsFinalInscriptionsNew(

boolean done = ss.addStudentFinalInscription(student, finalInscription);
if(!done){
return status(Status.BAD_REQUEST).build();
return status(Status.CONFLICT).build();
}

return noContent().build();
Expand Down Expand Up @@ -446,8 +446,8 @@ public Response studentsFinalInscriptionsQualify(
return status(Status.NOT_FOUND).build();
}

if(!ss.addFinalGrade(inscriptionId, docket, gradeDTO.getGrade())) {
return status(Status.BAD_REQUEST).build();
if(!finalInscription.isOpen() || !ss.addFinalGrade(inscriptionId, docket, gradeDTO.getGrade())) {
return status(Status.CONFLICT).build();
}

return noContent().build();
Expand Down

0 comments on commit af5239b

Please sign in to comment.