public async Task <WrapperSimpleTypesDTO> CrearCategoriaCandidatos(CategoriasCandidatos categoriaCandidatoParaCrear) { using (SportsGoEntities context = new SportsGoEntities(false)) { PlanesRepository planRepo = new PlanesRepository(context); int?codigoPlanExistente = await planRepo.BuscarCodigoPlanUsuarioPorCodigoCandidato(categoriaCandidatoParaCrear.CodigoCandidato); if (!codigoPlanExistente.HasValue) { throw new InvalidOperationException("No se pudo hallar el plan del candidato para crear la categoria para el!."); } // Se "SUBE" el contador de categorias 1 PlanesUsuarios planUsuarioExistente = await planRepo.ModificarNumeroCategoriasUsadas(codigoPlanExistente.Value, 1); if (categoriaCandidatoParaCrear.HabilidadesCandidatos != null && categoriaCandidatoParaCrear.HabilidadesCandidatos.Count > 0) { categoriaCandidatoParaCrear.HabilidadesCandidatos = categoriaCandidatoParaCrear.HabilidadesCandidatos.Where(x => x.NumeroEstrellas > 0).ToList(); } CategoriasRepository categoriasRepo = new CategoriasRepository(context); categoriasRepo.CrearCategoriaCandidatos(categoriaCandidatoParaCrear); WrapperSimpleTypesDTO wrapperCrearCategoriaCandidato = new WrapperSimpleTypesDTO(); wrapperCrearCategoriaCandidato.NumeroRegistrosAfectados = await context.SaveChangesAsync(); if (wrapperCrearCategoriaCandidato.NumeroRegistrosAfectados > 0) { wrapperCrearCategoriaCandidato.Exitoso = true; wrapperCrearCategoriaCandidato.ConsecutivoCreado = categoriaCandidatoParaCrear.Consecutivo; } return(wrapperCrearCategoriaCandidato); } }