public MensajeDto CrearMensaje(MensajeDto mensajeDto) { using (TransactionScope ts = new TransactionScope()) { using (var ctx = new FacturaElectronicaEntities()) { Mensaje mensaje = new Mensaje(); ToMensaje(mensajeDto, mensaje); MensajeCliente mensajeCliente = null; foreach (var clienteDto in mensajeDto.Clientes) { Cliente cliente = this.ObtenerCliente(ctx, clienteDto.Id); mensajeCliente = new MensajeCliente() { Mensaje = mensaje, Cliente = cliente, Leido = false }; mensaje.MensajeClientes.Add(mensajeCliente); } mensaje.FechaDeCarga = DateTime.Now; ctx.Mensajes.AddObject(mensaje); ctx.SaveChanges(); ts.Complete(); mensajeDto.Id = mensaje.Id; } return(mensajeDto); } }
public void MarcarComoLeido(long mensajeId, long clienteId) { using (var ctx = new FacturaElectronicaEntities()) { MensajeCliente mensajeCliente = ctx.MensajeClientes.Where(mc => mc.MensajeId == mensajeId && mc.ClienteId == clienteId).Single(); mensajeCliente.Leido = true; ctx.SaveChanges(); } }
/// <summary> /// Monitorea las notificaciones /// </summary> /// <seealso cref="https://documentation.onesignal.com/docs/xamarin-sdk#section--notificationreceived-"/> public void Init() { //Handle when your app starts OneSignal.Current.IdsAvailable(async(playerID, pushToken) => { await operacionesBL.RegistrarDispositivoAsync(new Dispositivo { Id = Guid.Parse(Settings.Current.LoginInfo.Usr.Id), Modelo = Settings.Current.ModeloDispositivo, SO = Settings.Current.SO, TipoDispositivo = Settings.Current.TipoDispositivo, TipoUsuario = (int)TipoUsuarioEnum.Cliente, VercionApp = !string.IsNullOrEmpty(Settings.Current.VersionApp) ? Settings.Current.VersionApp : "0", TimeZona = "-28800", PlayerId = playerID }); }); //Inicializa la subscripción OneSignal.Current.StartInit(MPS.Core.Lib.Helpers.AppSettingsManager.Settings["PushNotificationAppID"]) .InFocusDisplaying(Com.OneSignal.Abstractions.OSInFocusDisplayOption.Notification) .HandleNotificationReceived((notification) => { var mensaje = new MensajeCliente(notification.payload.additionalData); DelegarAccionDeNotificacion(mensaje); }).HandleNotificationOpened((notification) => { var mensaje = new MensajeCliente(notification.notification.payload.additionalData); if (mensaje.TipoNotificacion.Equals((int)TipoNotificacionEnum.SocioAcepta) || mensaje.TipoNotificacion.Equals((int)TipoNotificacionEnum.Finalizado)) { MPS.Core.Lib.Helpers.Settings.Current.ServicioSolicitado = new ServicioSolicitado { ActualLat = mensaje.ActualLat, CalificacionSocio = mensaje.CalificacionSocio, ClaveTipoServicio = mensaje.ClaveTipoServicio, FechaSolicitud = mensaje.FechaSolicitud, FolioSolicitud = mensaje.FolioSolicitud, IdSocio = mensaje.IdSocio, IdSolicitud = mensaje.IdSolicitud, IdTipoSolicitud = mensaje.IdTipoSolicitud, NombreServicio = mensaje.NombreServicio, NombreSocio = mensaje.NombreSocio, TipoServicio = mensaje.TipoServicio, TipoNotificacion = mensaje.TipoNotificacion }; } else if (mensaje.TipoNotificacion.Equals((int)TipoNotificacionEnum.EstatusPago)) { Settings.Current.EstatusPago = new EstatusPago { Banco = mensaje.Banco, NoAutorizacion = mensaje.NoAutorizacion, NoTarjeta = mensaje.NoTarjeta, Monto = mensaje.Monto, Descripcion = mensaje.Descripcion, ClaveTipoServicio = mensaje.ClaveTipoServicio, NombreServicio = mensaje.NombreServicio, Codigo = mensaje.Codigo, Status = mensaje.Status }; } }) .HandleInAppMessageClicked((notification) => { }).EndInit(); }
public void DelegarAccionDeNotificacion(MensajeCliente mensaje) { NotificationReceived?.Invoke(this, mensaje); var paginaSolicitarServicio = typeof(SolicitarServicio); var paginaActual = App.Current.MainPage.Navigation.NavigationStack[App.Current.MainPage.Navigation.NavigationStack.Count - 1]; if (paginaActual.GetType() == paginaSolicitarServicio) { var dtx = paginaActual.BindingContext as Core.Lib.ViewModels.Clientes.SolicitudDeServicioViewModel; if (mensaje.TipoNotificacion.Equals((int)TipoNotificacionEnum.SocioAcepta)) { dtx.MostrarModalSolicitudCommand.Execute(new ServicioSolicitado { ActualLat = mensaje.ActualLat, CalificacionSocio = mensaje.CalificacionSocio, ClaveTipoServicio = mensaje.ClaveTipoServicio, FechaSolicitud = mensaje.FechaSolicitud, FolioSolicitud = mensaje.FolioSolicitud, IdSocio = mensaje.IdSocio, IdSolicitud = mensaje.IdSolicitud, IdTipoSolicitud = mensaje.IdTipoSolicitud, NombreServicio = mensaje.NombreServicio, NombreSocio = mensaje.NombreSocio, TipoServicio = mensaje.TipoServicio }); } else if (mensaje.TipoNotificacion.Equals((int)TipoNotificacionEnum.Finalizado)) { dtx.AbrirModalCalificarCommand.Execute(mensaje.IdSolicitud); } else if (mensaje.TipoNotificacion.Equals((int)TipoNotificacionEnum.EstatusPago)) { dtx.MostrarModalEstatusPagoCommand.Execute(new EstatusPago { Banco = mensaje.Banco, NoAutorizacion = mensaje.NoAutorizacion, NoTarjeta = mensaje.NoTarjeta, Monto = mensaje.Monto, Descripcion = mensaje.Descripcion, ClaveTipoServicio = mensaje.ClaveTipoServicio, NombreServicio = mensaje.NombreServicio, Codigo = mensaje.Codigo, Status = mensaje.Status }); } } else { if (mensaje.TipoNotificacion.Equals((int)TipoNotificacionEnum.SocioAcepta) || mensaje.TipoNotificacion.Equals((int)TipoNotificacionEnum.Finalizado)) { Settings.Current.ServicioSolicitado = new ServicioSolicitado { ActualLat = mensaje.ActualLat, CalificacionSocio = mensaje.CalificacionSocio, ClaveTipoServicio = mensaje.ClaveTipoServicio, FechaSolicitud = mensaje.FechaSolicitud, FolioSolicitud = mensaje.FolioSolicitud, IdSocio = mensaje.IdSocio, IdSolicitud = mensaje.IdSolicitud, IdTipoSolicitud = mensaje.IdTipoSolicitud, NombreServicio = mensaje.NombreServicio, NombreSocio = mensaje.NombreSocio, TipoServicio = mensaje.TipoServicio }; } else if (mensaje.TipoNotificacion.Equals((int)TipoNotificacionEnum.EstatusPago)) { Settings.Current.EstatusPago = new EstatusPago { Banco = mensaje.Banco, NoAutorizacion = mensaje.NoAutorizacion, NoTarjeta = mensaje.NoTarjeta, Monto = mensaje.Monto, Descripcion = mensaje.Descripcion, ClaveTipoServicio = mensaje.ClaveTipoServicio, NombreServicio = mensaje.NombreServicio, Codigo = mensaje.Codigo, Status = mensaje.Status }; } } }