public void GrupoMabDelete(GrupoMabModel model) { var codigosParaGrupoMab = DaoProvider.GetDaoCodigoMovimientoMab().GetCodigosMovimientoByGrupoMab(model.Id); var tieneAsociado = false; foreach (var codigoMab in codigosParaGrupoMab) { if (DaoProvider.GetDaoMab().TieneAsociadoCodigoMovimiento(codigoMab.Id)) { tieneAsociado = true; break; } } var entidadAEliminar = DaoProvider.GetDaoGrupoMab().GetById(model.Id); if (tieneAsociado) { throw new BaseException(Resources.Mab.MabPoseeCodigosMovimientoAsignado); } foreach (var codigoMab in codigosParaGrupoMab) { codigoMab.GrupoMab = null; DaoProvider.GetDaoCodigoMovimientoMab().SaveOrUpdate(codigoMab); } DaoProvider.GetDaoGrupoMab().Delete(entidadAEliminar); }
private void ValidarGrupoMab(GrupoMabModel model) { model.EstadoAnteriorPtId = model.EstadoAnteriorPtId.HasValue ? model.EstadoAnteriorPtId : 0; model.EstadoAnteriorPtAnteriorId = model.EstadoAnteriorPtAnteriorId.HasValue ? model.EstadoAnteriorPtAnteriorId : 0; var error = new StringBuilder(); if (model.CodigosMovimientoMab == null) { model.CodigosMovimientoMab = new List <CodigoMovimientoMabModel>(); } if (!model.EnptId.HasValue) { model.EnptId = 0; } if (!model.EnPTanteriorId.HasValue) { model.EnPTanteriorId = 0; } //es un nuevo grupo if (model.Id == 0 && model.CodigosMovimientoMab.Count == 0) { error.Append(Resources.Mab.GrupoSinCodigos); } if (model.TipoGrupo == 0) { error.Append("El campo Tipo Grupo(*) es obligatorio"); } if (error.Length > 0) { throw new BaseException(error.ToString()); } }
public GrupoMabModel GrupoMabSave(GrupoMabModel model) { //ValidarGrupoMab(model); if (model.Id == 0) { model.NumeroGrupo = DaoProvider.GetDaoGrupoMab().GetUltimoNumeroCorrelativo(); } var grupoMabGuardado = DaoProvider.GetDaoGrupoMab().SaveOrUpdate(GenerarEntidad(model)); var codigos = new List <CodigoMovimientoMab>(); CodigoMovimientoMab codigo; foreach (var c in model.CodigosMovimientoMab) { codigo = DaoProvider.GetDaoCodigoMovimientoMab().GetById(c.Id); codigos.Add(codigo); codigo.GrupoMab = grupoMabGuardado; DaoProvider.GetDaoCodigoMovimientoMab().SaveOrUpdate(codigo); } //cuando edito if (model.Id > 0) { var codigosSinGrupo = DaoProvider.GetDaoCodigoMovimientoMab().GetCodigosMovimientoQueNoEstanEn(codigos, model.Id); foreach (var codigoNoAsignado in codigosSinGrupo) { codigoNoAsignado.GrupoMab = null; DaoProvider.GetDaoCodigoMovimientoMab().SaveOrUpdate(codigoNoAsignado); } } return(GenerarModel(grupoMabGuardado)); }
//TODO separar este metodo en varios submetodos asi se hace mas facil de entender y mantener private GrupoMab GenerarEntidad(GrupoMabModel model) { ValidarGrupoMab(model); var entidad = Mapper.Map <GrupoMabModel, GrupoMab>(model); var estadoPtAnteriorEjecucionMab = new List <EstadoPuestoDeTrabajoEnum>(); var estadoPtAnteriorEjecucionMabAnterior = new List <EstadoPuestoDeTrabajoEnum>(); if (model.EstadosPuestoAnterioresPt != null) { foreach (var estadoPuestoModel in model.EstadosPuestoAnterioresPt) { estadoPtAnteriorEjecucionMab.Add(estadoPuestoModel.Valor); } } if (model.EstadosPuestoAnterioresPtAnterior != null) { foreach (var estadoPuestoModel in model.EstadosPuestoAnterioresPtAnterior) { estadoPtAnteriorEjecucionMabAnterior.Add(estadoPuestoModel.Valor); } } entidad.Enpt = new EjecucionMab(); entidad.EnPTanterior = new EjecucionMab(); entidad.Enpt.Liquidacion = model.Liquidacion; entidad.Enpt.ModificaSitRev = model.ModificaSitRev; entidad.Enpt.GeneraVacante = model.GeneraVacante; entidad.Enpt.ModificaEstadoAnteriorEnPT = model.ModificaEstadoAnteriorPuesto; entidad.Enpt.ModificaEstadoAsignacionEnPT = model.ModificaEstadoAsignacionPuesto; entidad.Enpt.ModificaEstadoPosteriorEnPT = model.ModificaEstadoPosteriorPuesto; if (model.EstadoAsignacionId.HasValue) { entidad.Enpt.EstadoAsignacion = new EstadoAsignacion(); entidad.Enpt.EstadoAsignacion = DaoProvider.GetDaoEstadoAsignacion().GetById(model.EstadoAsignacionId.Value); } entidad.EnPTanterior.Liquidacion = model.LiquidacionAnterior; entidad.EnPTanterior.ModificaSitRev = model.ModificaSitRevAnterior; entidad.EnPTanterior.GeneraVacante = model.GeneraVacanteAnterior; entidad.EnPTanterior.ModificaEstadoAnteriorEnPT = model.ModificaEstadoAnteriorPuestoAnterior; entidad.EnPTanterior.ModificaEstadoAsignacionEnPT = model.ModificaEstadoAsignacionPuestoAnterior; entidad.EnPTanterior.ModificaEstadoPosteriorEnPT = model.ModificaEstadoPosteriorPuestoAnterior; if (model.EstadoAsignacionAnteriorId.HasValue) { entidad.EnPTanterior.EstadoAsignacion = new EstadoAsignacion(); entidad.EnPTanterior.EstadoAsignacion = DaoProvider.GetDaoEstadoAsignacion().GetById(model.EstadoAsignacionAnteriorId.Value); } //obtenemos los estados (anteriores y posterior) de puesto de trabajo actual var listaEstadosNuevoPuesto = new List <EjecucionMABEstadosPuesto>(); if (model.EstadosPuestoAnterioresPt != null && model.ModificaEstadoAnteriorPuesto) { foreach (var emep in model.EstadosPuestoAnterioresPt) { var emepNuevo = new EjecucionMABEstadosPuesto(); emepNuevo.EjecucionMab = entidad.Enpt; emepNuevo.EstadoPuesto = DaoProvider.GetDaoEstadoPuestoTrabajo().GetByFilter(emep.Valor); emepNuevo.EsPosterior = false; listaEstadosNuevoPuesto.Add(emepNuevo); } } if (model.EstadoPosteriorPtId.HasValue && model.ModificaEstadoPosteriorPuesto) { listaEstadosNuevoPuesto.Add(new EjecucionMABEstadosPuesto() { EjecucionMab = entidad.Enpt, EsPosterior = true, EstadoPuesto = DaoProvider.GetDaoEstadoPuestoTrabajo().GetById(model.EstadoPosteriorPtId.Value) }); } //obtenemos los estados (anteriores y posterior) de puesto de trabajo anterior var listaEstadosPuestoAnterior = new List <EjecucionMABEstadosPuesto>(); if (model.EstadosPuestoAnterioresPtAnterior != null && model.ModificaEstadoAnteriorPuestoAnterior) { foreach (var emepAnterior in model.EstadosPuestoAnterioresPtAnterior) { var emepAnteriorNuevo = new EjecucionMABEstadosPuesto(); emepAnteriorNuevo.EjecucionMab = entidad.EnPTanterior; emepAnteriorNuevo.EstadoPuesto = DaoProvider.GetDaoEstadoPuestoTrabajo().GetByFilter(emepAnterior.Valor); emepAnteriorNuevo.EsPosterior = false; listaEstadosPuestoAnterior.Add(emepAnteriorNuevo); } } if (model.EstadoPosteriorPtAnteriorId.HasValue && model.ModificaEstadoPosteriorPuestoAnterior) { listaEstadosPuestoAnterior.Add(new EjecucionMABEstadosPuesto() { EjecucionMab = entidad.EnPTanterior, EsPosterior = true, EstadoPuesto = DaoProvider.GetDaoEstadoPuestoTrabajo().GetById( model.EstadoPosteriorPtAnteriorId.Value) }); } entidad.Enpt.EstadosPuestos = listaEstadosNuevoPuesto; entidad.EnPTanterior.EstadosPuestos = listaEstadosPuestoAnterior; return(entidad); }
//TODO falta implementar public GrupoMabModel GrupoMabReactivar(GrupoMabModel model) { return(null); }