public async Task <Tuple <WrapperSimpleTypesDTO, TimeLineNotificaciones> > EliminarContacto(Contactos contactoParaEliminar) { using (SportsGoEntities context = new SportsGoEntities(false)) { ChatsRepository chatsRepo = new ChatsRepository(context); Contactos contactoFiltro = new Contactos { Consecutivo = contactoParaEliminar.Consecutivo }; chatsRepo.EliminarContacto(contactoFiltro); Tuple <Contactos, int?> tupleBusqueda = await chatsRepo.BuscarConsecutivoContactoContrario(contactoParaEliminar); Contactos contactoOwner = tupleBusqueda.Item1; int? consecutivoContrarioBuscado = tupleBusqueda.Item2; if (!consecutivoContrarioBuscado.HasValue) { throw new InvalidOperationException("No existe el contacto contrario de esta persona!."); } Contactos contactoParaBorrar = new Contactos { Consecutivo = consecutivoContrarioBuscado.Value }; chatsRepo.EliminarContacto(contactoParaBorrar); NoticiasRepository noticiasRepo = new NoticiasRepository(context); Notificaciones notificacion = new Notificaciones { CodigoTipoNotificacion = (int)TipoNotificacionEnum.PersonaEliminada, CodigoPersonaOrigenAccion = contactoOwner.CodigoPersonaOwner, CodigoPersonaDestinoAccion = contactoOwner.CodigoPersonaContacto, Creacion = DateTime.Now }; noticiasRepo.CrearNotificacion(notificacion); WrapperSimpleTypesDTO wrapperEliminarContacto = new WrapperSimpleTypesDTO(); TimeLineNotificaciones timeLineNotificacion = null; wrapperEliminarContacto.NumeroRegistrosAfectados = await context.SaveChangesAsync(); if (wrapperEliminarContacto.NumeroRegistrosAfectados > 0) { wrapperEliminarContacto.Exitoso = true; if (notificacion.Consecutivo > 0) { timeLineNotificacion = new TimeLineNotificaciones(await noticiasRepo.BuscarNotificacion(notificacion)); } } return(Tuple.Create(wrapperEliminarContacto, timeLineNotificacion)); } }