public async Task <WrapperSimpleTypesDTO> EliminarPlan(Planes planParaEliminar) { using (SportsGoEntities context = new SportsGoEntities(false)) { PlanesRepository planRepository = new PlanesRepository(context); int?codigoTipoPerfilPlan = await planRepository.BuscarCodigoTipoPerfilDeUnPlan(planParaEliminar); if (!codigoTipoPerfilPlan.HasValue) { throw new InvalidOperationException("El plan no tiene un tipo de perfil especificado!. BUUUUUGGGGGG!."); } TipoPerfil tipoPerfil = codigoTipoPerfilPlan.Value.ToEnum <TipoPerfil>(); int numeroDePlanesDefault = await planRepository.NumeroPlanesDefault(tipoPerfil); if (numeroDePlanesDefault <= 1) { bool esPlanDefault = await planRepository.BuscarSiPlanEsDefault(planParaEliminar); if (esPlanDefault) { throw new InvalidOperationException("No puedes quedarte sin planes default para el perfil de " + tipoPerfil.ToString() + "!."); } } NoticiasRepository noticiasRepo = new NoticiasRepository(context); Notificaciones notificacion = new Notificaciones { CodigoPlanNuevo = planParaEliminar.Consecutivo }; noticiasRepo.EliminarNotificacionesDeUnPlan(notificacion); PlanesContenidos planContenido = new PlanesContenidos { CodigoPlan = planParaEliminar.Consecutivo }; planRepository.EliminarMultiplesPlanesContenidos(planContenido); planRepository.EliminarPlan(planParaEliminar); ArchivosRepository archivoRepo = new ArchivosRepository(context); Archivos archivo = new Archivos { Consecutivo = planParaEliminar.CodigoArchivo }; archivoRepo.EliminarArchivo(archivo); WrapperSimpleTypesDTO wrapperEliminarPlan = new WrapperSimpleTypesDTO(); wrapperEliminarPlan.NumeroRegistrosAfectados = await context.SaveChangesAsync(); if (wrapperEliminarPlan.NumeroRegistrosAfectados > 0) { wrapperEliminarPlan.Exitoso = true; } return(wrapperEliminarPlan); } }