//Todo: --> Reglas de negocio protected override void AntesDePersistir(ProvinciaDtm registro, ParametrosDeNegocio parametros) { base.AntesDePersistir(registro, parametros); if (parametros.Operacion == enumTipoOperacion.Modificar) { //validar que si la provincia está relacionada con códigos postales, los dos primeros dígitos del código son igual que el código de la provincia var a = Contexto.Set <CpsDeUnaProvinciaDtm>().FirstOrDefault(x => x.IdProvincia == registro.Id && x.CodigoPostal.Codigo.Substring(0, 2) != registro.Codigo); if (a != null) { var codigoPostal = Contexto.Set <CodigoPostalDtm>().LeerCacheadoPorId(a.IdCp).Codigo; GestorDeErrores.Emitir($"No se puede modificar la provincia ya que el código de la provincia es {registro.Codigo} y está relacionada con el código postal {codigoPostal}"); } } if (parametros.Operacion == enumTipoOperacion.Eliminar) { //Validar que no hay municipios con la provincia var municipio = Contexto.Set <MunicipioDtm>().FirstOrDefault(x => x.IdProvincia == registro.Id); if (municipio != null) { GestorDeErrores.Emitir($"No se puede eliminar la provincia por estar relacionada con el municipio {municipio.Expresion}"); } //Elimina las relaciones del los cp con la provincia a borrar var a = Contexto.Set <CpsDeUnaProvinciaDtm>().Where(x => x.IdProvincia == registro.Id); GestorDeCpsDeUnaProvincia.Gestor(Contexto, Contexto.Mapeador).BorrarRegistros(a); } }
protected override void DespuesDePersistir(CodigoPostalDtm registro, ParametrosDeNegocio parametros) { base.DespuesDePersistir(registro, parametros); if (parametros.Operacion == enumTipoOperacion.Insertar) { //relacionar con la provincia usando los dos primeros caractéres var gestorProvincias = GestorDeProvincias.Gestor(Contexto, Contexto.Mapeador); var provinciaDtm = gestorProvincias.LeerRegistro(nameof(ProvinciaDtm.Codigo), registro.Codigo.PadLeft(5, '0').Substring(0, 2), errorSiNoHay: true, errorSiHayMasDeUno: true, traqueado: false, conBloqueo: false, aplicarJoin: false); GestorDeCpsDeUnaProvincia.CrearRelacion(Contexto, registro, provinciaDtm); //relacionar con el municipio usando lo indicado en los parámetros if (parametros.Parametros.ContainsKey(nameof(MunicipioDtm))) { var municipioDtm = (MunicipioDtm)parametros.Parametros[nameof(MunicipioDtm)]; GestorDeCpsDeUnMunicipio.CrearRelacion(Contexto, registro, municipioDtm); } } }