Commit 2378ae93 authored by D’jalmar Gutierrez Titirico's avatar D’jalmar Gutierrez Titirico 🚲

Se añadio la funcionalidad de editar/añadir/eliminar tags,cargos y datos de los postulantes

Se corrigio un error en el nombre de una relacion
	modified:   server/sqldb/index.js
parent 434e30d9
<div class="modal-header">
<button ng-if="modal.dismissable" type="button" ng-click="$dismiss()" class="close">&times;</button>
<h4 ng-if="modal.title" ng-bind="modal.title" class="modal-title"></h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-4">
<select class="form-control" ng-model="modal.modelo.propiedad" name="combo">
<option value="{{tiposDato.propiedad}}"
ng-repeat="tiposDato in modal.modelo.tiposDato.rows">{{tiposDato.nombre}}
</option>
</select>
</div>
<div class="col-md-8">
<input type="text" name="valor" class="form-control" ng-model="modal.modelo.valor" required
placeholder="{{modal.modelo.placeholder}}">
</div>
</div>
</div>
<div class="modal-footer">
<button ng-repeat="button in modal.buttons" ng-class="button.classes" ng-click="button.click($event)"
ng-bind="button.text" class="btn"></button>
</div>
<div class="modal-header">
<button ng-if="modal.dismissable" type="button" ng-click="$dismiss()" class="close">&times;</button>
<h4 ng-if="modal.title" ng-bind="modal.title" class="modal-title"></h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-4">
<select class="form-control" ng-model="modal.modelo.propiedad">
<option ng-selected="tiposDato.propiedad == modal.modelo.propiedad" value="{{tiposDato.propiedad}}"
ng-repeat="tiposDato in modal.modelo.tiposDato.rows">{{tiposDato.nombre}}
</option>
</select>
</div>
<div class="col-md-8">
<input type="text" name="valor" class="form-control" ng-model="modal.modelo.valor" required >
</div>
</div>
</div>
<div class="modal-footer">
<button ng-repeat="button in modal.buttons" ng-class="button.classes" ng-click="button.click($event)"
ng-bind="button.text" class="btn"></button>
</div>
......@@ -26,12 +26,14 @@
eliminarDato(id) {
return this.resource.remove({id: id}).$promise;
}
nuevoDatoPostulante(datoPostulante){
crearDatoPostulante(datoPostulante){
return this.resource.save(datoPostulante).$promise;
}
editarDatoPostulante(id, datoPostulante) {
console.log(id)
console.log(datoPostulante)
return this.resource.update({id: id}, datoPostulante).$promise;
}
}
......
'use strict';
(()=> {
class DatoPostulanteCrearModalController {
constructor($uibModalInstance, postulante, tipoDatoService, datoPostulanteService) {
this.enviado = false;
this.modal = $uibModalInstance;
this.postulante = postulante;
this.datoPostulante = {fk_postulante: this.postulante._id}
this.service = datoPostulanteService;
tipoDatoService.getTiposDato().then(tiposDato=> {
this.tiposDato = tiposDato;
this.tipoDatoSeleccionado = {};
})
}
guardar(form) {
this.enviado = true;
if (form.$valid) {
this.datoPostulante.propiedad = this.tipoDatoSeleccionado.propiedad;
this.service.crearDatoPostulante(this.datoPostulante)
.then(datoPostulante=> {
this.tipoDatoSeleccionado.DatoPostulante = datoPostulante;
this.postulante.Datos.push(this.tipoDatoSeleccionado);
this.modal.close(datoPostulante)
})
.catch(err => {
this.errores.otros = err.data.message; // TODO
});
}
}
}
angular.module('moduloPersonalApp')
.controller('DatoPostulanteCrearModalCtrl', DatoPostulanteCrearModalController)
})();
'use strict';
(()=> {
class DatoPostulanteEditarModalController {
constructor($uibModalInstance, parametro, tipoDatoService, datoPostulanteService) {
this.errores = {};
this.enviado = false;
this.modal = $uibModalInstance;
this.datoPostulante = Object.assign({}, parametro.tipoDato.DatoPostulante)
this.tipoDato = parametro.tipoDato;
this.service = datoPostulanteService;
tipoDatoService.getTiposDato().then(tiposDato=> {
this.tiposDato = tiposDato;
this.tipoDatoSeleccionado = tiposDato.rows.find(x=>x.propiedad === this.datoPostulante.propiedad);
})
}
guardar(form) {
this.enviado = true;
if (form.$valid) {
this.service.editarDatoPostulante(this.datoPostulante._id,{
propiedad: this.tipoDatoSeleccionado.propiedad,
valor: this.datoPostulante.valor
})
.then(datoPostulante=> {
this.tipoDatoSeleccionado.DatoPostulante = datoPostulante;
this.tipoDato = Object.assign(this.tipoDato,this.tipoDatoSeleccionado);
this.modal.close(datoPostulante)
})
.catch(err => {
this.errores.otros = err.data.message; //TODO
});
}
}
}
angular.module('moduloPersonalApp')
.controller('DatoPostulanteEditarModalCtrl', DatoPostulanteEditarModalController)
})();
<form class="form" name="form" ng-submit="vm.guardar(form)" novalidate>
<div class="modal-header">
<button type="button" ng-click="vm.modal.dismiss()" class="close">&times;</button>
<h4 class="modal-title">Datos</h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-10">
<label>Dato</label>
<div class="">
<select class="form-control" name="tiposDato" ng-model="vm.tipoDatoSeleccionado"
ng-options="tDato as tDato.nombre for tDato in vm.tiposDato.rows" required>
</select>
</div>
<p class="help-block" ng-show="form.tiposDato.$error.required && vm.enviado">
Seleccione un tipo de dato
</p>
</div>
<div class="col-md-10">
<label>Valor</label>
<div class="">
<textarea type="text" name="valor" class="form-control " ng-model="vm.datoPostulante.valor"
required></textarea>
<p class="help-block" ng-show="form.valor.$error.required && vm.enviado">
Ingrese el dato acorde al tipo seleccionado
</p>
</div>
</div>
</div>
<div class="form-group has-error">
<p class="help-block">{{vm.errores.otros}}</p>
</div>
</div>
<div class="modal-footer">
<button class="btn btn-primary" type="submit" ng-disabled="!(form.tiposDato.$dirty ||form.valor.$dirty)">
Guardar
</button>
<button class="btn btn-default" type="button" ng-click="vm.modal.dismiss()">Cancelar</button>
</div>
</form>
......@@ -20,10 +20,12 @@
this.postulacion.fk_cargo = this.cargoSeleccionado._id;
this.service.crearPostulacion(this.postulacion)
.then(postulacion=> {
this.cargoSeleccionado.Postulacion = postulacion;
this.postulante.Postulaciones.push(this.cargoSeleccionado);
this.modal.close(postulacion)
})
.catch(err => {
this.errores.otros = err.message;
this.errores.otros = err.data.message; // TODO
});
}
}
......
......@@ -4,8 +4,10 @@
class PostulanteEditarModalController {
constructor($uibModalInstance, parametro, cargoService, postulacionService) {
this.errores = {};
this.enviado = false;
this.modal = $uibModalInstance;
this.postulacion = Object.assign({}, parametro.cargo.Postulacion);
this.cargo = parametro.cargo;
this.service = postulacionService;
cargoService.getCargos().then(cargos => {
this.cargos = cargos;
......@@ -21,7 +23,8 @@
presentacion: this.postulacion.presentacion
})
.then(postulacion=> {
console.log(postulacion);
this.cargoSeleccionado.Postulacion = postulacion;
this.cargo = Object.assign(this.cargo, this.cargoSeleccionado);
this.modal.close(postulacion)
})
.catch(err => {
......
......@@ -5,9 +5,9 @@
</div>
<div class="modal-body">
<div class="row">
<div class="col-sm-10">
<div class="col-md-10">
<label>Cargos</label>
<div class="input-group">
<div class="">
<select class="form-control" name="cargos" ng-model="vm.cargoSeleccionado"
ng-options="crg as crg.nombre for crg in vm.cargos.rows" required>
</select>
......@@ -16,9 +16,9 @@
</p>
</div>
</div>
<div class="col-md-12">
<div class="col-md-10">
<label>Presentación</label>
<div class="input-group">
<div class="">
<textarea type="text" name="presentacion" class="form-control " ng-model="vm.postulacion.presentacion"
required></textarea>
<p class="help-block" ng-show="form.presentacion.$error.required && vm.enviado">
......
......@@ -45,6 +45,10 @@
editarPostulacion(id, postulacion) {
return this.resource.update({id: id}, postulacion).$promise;
}
eliminarPostulacion(id){
return this.resource.remove({id:id}).$promise;
}
}
angular.module('moduloPersonalApp')
.service('postulacionService', PostulacionService);
......
......@@ -2,7 +2,7 @@
(()=> {
class PostulanteEditarController {
constructor($stateParams, postulanteService, datoPostulanteService, tipoDatoService, $uibModal, Modal, tagService, tagPostulanteService) {
constructor($stateParams, postulanteService, datoPostulanteService, tipoDatoService, $uibModal, Modal, tagService, tagPostulanteService,postulacionService) {
this.errores = {}; // lista de errores
this.postulanteEnviado = false; // se refiere a si se intento enviar el formulario del postulante
this.Modal = Modal;
......@@ -12,6 +12,7 @@
this.tipoDatoService = tipoDatoService;
this.tagService = tagService;
this.tagPostulanteService = tagPostulanteService;
this.postulacionService = postulacionService;
this.id = $stateParams.postulanteId;
this.tags = [];
this.service.getPostulante(this.id).then(postulante=> {
......@@ -20,6 +21,7 @@
});
}
//region Datos del postulante
eliminarDato(dato) {
this.Modal.confirm.eliminar(dato => {
this.datoPostulanteService.eliminarDato(dato.DatoPostulante._id)
......@@ -29,54 +31,31 @@
})(dato.nombre, dato);
}
editarDato(dato) {
this.tipoDatoService.getTiposDato().then(tiposDato=> {
dato.tiposDato = tiposDato;
console.log(tiposDato);
dato.valor = dato.DatoPostulante.valor;
this.Modal.confirm.editar(dato=> {
this.datoPostulanteService.editarDatoPostulante(dato.DatoPostulante._id, {
propiedad: dato.propiedad,
valor: dato.valor
})
.then(datoPostulante=> {
var tipoDato = dato.tiposDato.rows.find(x=>x.propiedad === datoPostulante.propiedad);
tipoDato.DatoPostulante = datoPostulante;
var index = this.postulante.Datos.findIndex(x=>x.DatoPostulante._id === tipoDato.DatoPostulante._id);
this.postulante.Datos[index] = tipoDato;
})
.catch(err=> {
console.log(err);
this.errores.other = err.data.message; // TODO mejorar manejo de errores en la api
})
})('app/datosPostulantes/datosPostulantes.modal.editar.html', dato);
});
editarDato(tipoDato) {
this.modal.open({
templateUrl: 'app/datosPostulantes/modals/datosPostulantes.modal.html',
controller: 'DatoPostulanteEditarModalCtrl',
controllerAs: 'vm',
resolve: {
parametro: {postulante: this.postulante, tipoDato: tipoDato}
}
})
}
crearDato() {
this.tipoDatoService.getTiposDato().then(tiposDato=> {
var dato = {};
dato.tiposDato = tiposDato;
console.log(tiposDato);
this.Modal.confirm.crear(dato=> {
this.datoPostulanteService.nuevoDatoPostulante({
fk_postulante: this.postulante._id,
propiedad: dato.propiedad,
valor: dato.valor
})
.then(datoPostulante=> {
var tipoDato = dato.tiposDato.rows.find(x=>x.propiedad === datoPostulante.propiedad);
tipoDato.DatoPostulante = datoPostulante;
this.postulante.Datos.push(tipoDato);
})
.catch(err=> {
console.log(err);
this.errores.other = err.data.message; // TODO mejorar manejo de errores en la api
})
})('app/datosPostulantes/datosPostulantes.modal.crear.html', dato);
});
this.modal.open({
templateUrl: 'app/datosPostulantes/modals/datosPostulantes.modal.html',
controller: 'DatoPostulanteCrearModalCtrl',
controllerAs: 'vm',
resolve: {
postulante: this.postulante
}
})
}
//endregion
//region postulante
guardarPostulante(form, campo) {
this.enviado = true;
if (form.$valid) {
......@@ -92,6 +71,9 @@
}
}
//endregion
//region postulaciones
editarPostulacion(cargo) {
this.modal.open({
templateUrl: 'app/postulaciones/modals/postulaciones.editar.modal.html',
......@@ -114,6 +96,17 @@
})
}
eliminarPostulacion(cargo){
this.Modal.confirm.eliminar(cargo => {
this.postulacionService.eliminarPostulacion(cargo.Postulacion._id)
.then(()=> {
this.postulante.Postulaciones.splice(this.postulante.Postulaciones.indexOf(cargo), 1);
})
})(cargo.nombre, cargo);
}
//endregion
//region tags
autoCompletarTags(query) {
console.log(this.tags)
if (this.tags.length == 0) {
......@@ -127,11 +120,21 @@
adicionarTag(tag) {
if (tag._id) {
this.tagPostulanteService.crearTagPostulante({fk_tag: tag._id, fk_postulante: this.id});
this.tagPostulanteService.crearTagPostulante({fk_tag: tag._id, fk_postulante: this.id}).then(tagPostulante=> {
tag.TagPostulante = tagPostulante;
return true;
});
}
else {
this.tagService.crearTag(tag).then(tag=> {
this.tagPostulanteService.crearTagPostulante({fk_tag: tag._id, fk_postulante: this.id});
this.tagService.crearTag(tag).then(nuevoTag=> {
this.tagPostulanteService.crearTagPostulante({
fk_tag: nuevoTag._id,
fk_postulante: this.id
}).then(tagPostulante=> {
tag.TagPostulante = tagPostulante;
this.tags.rows.push(tag);
return true;
});
})
}
}
......@@ -139,6 +142,8 @@
quitarTag(tag) {
this.tagPostulanteService.eliminarTagPostulante(tag.TagPostulante._id);
}
//endregion
}
angular.module('moduloPersonalApp')
.controller('PostulantesEditarCtrl', PostulanteEditarController);
......
......@@ -62,14 +62,12 @@
<div class="input-group">
<input ng-readonly="true" type="text" name="nombres" class="form-control"
ng-model="dato.DatoPostulante.valor" required>
<span class="input-group-btn">
<div class="input-group-btn">
<button type="button" class="btn btn-info" ng-click="vm.editarDato(dato)"><i
class="fa fa-edit"></i></button>
</span>
<span class="input-group-btn">
<button type="button" class="btn btn-danger" ng-click="vm.eliminarDato(dato)"><i
class="fa fa-trash"></i></button>
</span>
</div>
</div>
</div>
</div>
......@@ -96,7 +94,7 @@
<uib-accordion-group heading="Tags" class="panel-primary" is-open="true">
<div class="col-md-10">
<tags-input ng-model="vm.postulante.Tags" name="tags" placeholder="Adicionar Tags" display-property="nombre"
min-length="2" on-tag-added="vm.adicionarTag($tag)" on-tag-removed="vm.quitarTag($tag)">
min-length="2" on-tag-adding="vm.adicionarTag($tag)" on-tag-removed="vm.quitarTag($tag)">
<auto-complete source="vm.autoCompletarTags($query)" min-length="2"></auto-complete>
</tags-input>
</div>
......
......@@ -18,7 +18,7 @@
incluye: ['Postulante', 'Tag']
}).$promise;
}
gettagPostulante(id) {
getTagPostulante(id) {
return this.resource.get({id: id});
}
......
......@@ -68,7 +68,7 @@
<script src="components/autenticacion/autenticacion.module.js"></script>
<script src="components/modal/modal.module.js"></script>
<script src="components/util/util.module.js"></script>
<script src="app/postulantes/postulantes.js"></script>
<script src="app/postulantes/postulantes.controller.js"></script>
<script src="app/comentarios/comentarios.controller.js"></script>
<script src="app/comentarios/comentarios.js"></script>
<script src="app/comentarios/comentarios.service.js"></script>
......@@ -77,6 +77,8 @@
<script src="app/datosPostulantes/datosPostulantes.controller.js"></script>
<script src="app/datosPostulantes/datosPostulantes.js"></script>
<script src="app/datosPostulantes/datosPostulantes.service.js"></script>
<script src="app/datosPostulantes/modals/datosPostulantes.crear.modal.controller.js"></script>
<script src="app/datosPostulantes/modals/datosPostulantes.editar.modal.controller.js"></script>
<script src="app/main/main.controller.js"></script>
<script src="app/main/main.js"></script>
<script src="app/postulaciones/modals/postulaciones.crear.modal.controller.js"></script>
......@@ -86,8 +88,8 @@
<script src="app/postulaciones/postulaciones.service.js"></script>
<script src="app/postulantes/detalle/postulantes.detalle.controller.js"></script>
<script src="app/postulantes/editar/postulantes.editar.controller.js"></script>
<script src="app/postulantes/postulantes.controller.js"></script>
<script src="app/cargos/cargos.controller.js"></script>
<script src="app/postulantes/postulantes.js"></script>
<script src="app/postulantes/postulantes.service.js"></script>
<script src="app/tags/tags.controller.js"></script>
<script src="app/tags/tags.js"></script>
......
......@@ -99,9 +99,10 @@ db.DatoPostulante.belongsTo(db.Postulante, {
foreignKey: 'fk_postulante',
as: 'Postulante'
});
db.DatoPostulante.belongsTo(db.TipoDato, {
foreignKey: 'propiedad',
as: 'Cargo'
db.DatoPostulante.belongsTo(db.TipoDato,{
foreignKey:'propiedad',
as:'TipoDato'
});
db.TagPostulante.belongsTo(db.Postulante, {
foreignKey: 'fk_postulante',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment