Exemplo n.º 1
0
        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));
            }
        }