示例#1
0
        /// <summary>
        /// Notifica a Notiway que un mensaje fue leido
        /// </summary>
        /// <param name="request">Objeto que contiene todos los datos de autenticacion del usuario y el Id del mensaje</param>
        public void NotiwayNewsReadNotification(NotiwayNewsReadNotificationRequest request)
        {
            String _methodName = String.Format("{0}", System.Reflection.MethodBase.GetCurrentMethod().Name);

            LogRequest(request);

            var sessionId = GetSessionId(request, out errorMessage);

            if (errorMessage != ErrorMessagesMnemonics.None)
            {
                return;
            }

            var countryId  = Convert.ToInt32(ConfigurationManager.AppSettings["CountryId"]);
            var platformId = Convert.ToInt32(String.IsNullOrEmpty(request.Platform) ? ConfigurationManager.AppSettings["DefaultPlatform"] : request.Platform);

            if (countryId == 14 && platformId == 1)
            {
                countryId  = 1;
                platformId = 4;
            }

            try
            {
                using (var db = new Movilway.API.Data.Notiway.NotiwayEntities())
                {
                    ProviderLogger.InfoLow(() => TagValue.New()
                                           .MethodName(_methodName)
                                           .Message("[" + sessionId + "] " + "Actualizando registro ...")
                                           );

                    db.Database.ExecuteSqlCommand(
                        QUERY_AUDIT_READ,
                        new SqlParameter("@CountryP", countryId),
                        new SqlParameter("@PlatformP", platformId),
                        new SqlParameter("@LoginP", request.AuthenticationData.Username),
                        new SqlParameter("@ScheduleP", request.ScheduleId),
                        new SqlParameter("@DeviceTypeP", request.DeviceType)
                        );
                }

                ProviderLogger.InfoLow(() => TagValue.New()
                                       .MethodName(_methodName)
                                       .Message("[" + sessionId + "] " + "Hecho")
                                       );
            }
            catch (Exception e)
            {
                ProviderLogger.ExceptionLow(() => TagValue.New()
                                            .MethodName(_methodName)
                                            .Message("[AUDITORIA] [" + sessionId + "] " + "Error actualizando auditoria de mensaje")
                                            .Exception(e)
                                            );
            }
        }
示例#2
0
        /// <summary>
        /// Escribe en base de datos la auditoria para cada mensaje enviado
        /// </summary>
        /// <param name="SessionId">ID de la sesion que genero los mensajes (solo para log)</param>
        /// <param name="CountryId">ID del pais al que pertenece el usuario</param>
        /// <param name="PlatformId">ID de la plataforma al que pertenece el usuario</param>
        /// <param name="Login">Login del usuario</param>
        /// <param name="DeviceType">ID del tipo de acceso</param>
        /// <param name="MarkAsReaded">Incrementar el contador de lecturas para el mensaje automaticamente</param>
        /// <param name="messages">Lista de mensajes enviados que se escribiran en los datos de auditoria</param>
        private void writeAudit(String SessionId, int CountryId, int PlatformId, String Login, int DeviceType, bool MarkAsReaded, List <NotiwayNews> messages)
        {
            String _methodName = String.Format("{0}", System.Reflection.MethodBase.GetCurrentMethod().Name);

            if (messages != null && messages.Count > 0)
            {
                ProviderLogger.InfoLow(() => TagValue.New()
                                       .MethodName(_methodName)
                                       .Message("[AUDITORIA] [" + SessionId + "] " + "Total mensajes a ser actualizados en auditoria: " + messages.Count)
                                       );

                try
                {
                    using (var db = new Movilway.API.Data.Notiway.NotiwayEntities())
                    {
                        db.Database.ExecuteSqlCommand(
                            QUERY_AUDIT_BULK,
                            new SqlParameter("@CountryP", CountryId),
                            new SqlParameter("@PlatformP", PlatformId),
                            new SqlParameter("@LoginP", Login),
                            new SqlParameter("@ScheduleListP", String.Join(",", messages.Select(s => s.ScheduleId).ToList())),
                            new SqlParameter("@DeviceTypeP", DeviceType),
                            new SqlParameter("@MarkAsReadP", MarkAsReaded ? "1" : "0")
                            );
                    }

                    ProviderLogger.InfoLow(() => TagValue.New()
                                           .MethodName(_methodName)
                                           .Message("[AUDITORIA] [" + SessionId + "] " + "Hecho")
                                           );
                }
                catch (Exception e)
                {
                    ProviderLogger.ExceptionLow(() => TagValue.New()
                                                .MethodName(_methodName)
                                                .Message("[AUDITORIA] [" + SessionId + "] " + "Error actualizando auditoria de mensajes")
                                                .Exception(e)
                                                );
                }
            }
        }
示例#3
0
        /// <summary>
        /// Obtiene la lista de mensajes pendientes a ser enviados para el usuario que realiza la peticion
        /// </summary>
        /// <param name="request">Objeto que contiene todos los datos de autenticacion del usuario</param>
        /// <returns>Un objeto <c>GetNotiwayMessageListResponse</c> que contiene la lista de mensajes pendientes</returns>
        public GetNotiwayNewsListResponse GetNotiwayNewsList(GetNotiwayNewsListRequest request)
        {
            String _methodName = String.Format("{0}", System.Reflection.MethodBase.GetCurrentMethod().Name);

            LogRequest(request);

            GetNotiwayNewsListResponse response = new GetNotiwayNewsListResponse();
            var sessionId = GetSessionId(request, response, out errorMessage);

            if (errorMessage != ErrorMessagesMnemonics.None)
            {
                return(response);
            }

            var countryId  = Convert.ToInt32(ConfigurationManager.AppSettings["CountryId"]);
            var platformId = Convert.ToInt32(String.IsNullOrEmpty(request.Platform) ? ConfigurationManager.AppSettings["DefaultPlatform"] : request.Platform);

            if (countryId == 14 && platformId == 1)
            {
                countryId  = 1;
                platformId = 4;
            }

            using (var db = new Movilway.API.Data.Notiway.NotiwayEntities())
            {
                ProviderLogger.InfoLow(() => TagValue.New()
                                       .MethodName(_methodName)
                                       .Message("[" + sessionId + "] " + "Obteniendo lista de mensajes ...")
                                       );

                var list = db.Database.SqlQuery <NotiwayQuerySelectItem>(
                    QUERY_SELECT,
                    new SqlParameter("@CountryP", countryId),
                    new SqlParameter("@PlatformP", platformId),
                    new SqlParameter("@LoginP", request.AuthenticationData.Username),
                    new SqlParameter("@DeviceTypeP", request.DeviceType),
                    new SqlParameter("@OnlyUnreadP", request.OnlyUnread ? "1" : "0")
                    );

                foreach (var item in list)
                {
                    NotiwayNews aux = new NotiwayNews()
                    {
                        NewsId = item.MessageId
                        ,
                        ScheduleId = item.MessageScheduleId
                        ,
                        ExpirationDate = item.ExpirationDate.ToString("yyyy-MM-dd")
                        ,
                        Title = item.Title
                        ,
                        Abstract = item.Abstract
                        ,
                        Type = item.MessageTypeId
                        ,
                        FirstDeliveryDate = item.FirstDeliveryDate.ToString("yyyy-MM-dd")
                        ,
                        LastReadDate = ((item.LastReadDate != null && item.LastReadDate.HasValue) ? (item.LastReadDate.Value.ToString("yyyy-MM-dd")) : "")
                    };

                    if (request.DeviceType == PosWebDeviceTypeId)
                    {
                        // POS WEB
                        aux.Detail   = String.IsNullOrEmpty(item.Detail) ? "" : item.Detail;
                        aux.ImageURL = String.IsNullOrEmpty(item.ImageURL) ? "" : item.ImageURL;
                    }
                    response.NewsList.Add(aux);
                }

                ProviderLogger.InfoLow(() => TagValue.New()
                                       .MethodName(_methodName)
                                       .Message("[" + sessionId + "] " + "Total mensajes a ser enviados: " + response.NewsList.Count)
                                       );

                try
                {
                    ThreadPool.QueueUserWorkItem(unused => writeAudit(sessionId, countryId, platformId, request.AuthenticationData.Username, request.DeviceType, request.MarkAsReaded, response.NewsList));
                }
                catch (Exception e)
                {
                    ProviderLogger.ExceptionLow(() => TagValue.New()
                                                .MethodName(_methodName)
                                                .Message("Error iniciando hilo de escritura mensajes de auditoria")
                                                .Exception(e)
                                                );
                }
            }

            response.ResponseCode    = 0;
            response.ResponseMessage = "Exito";
            response.Quantity        = response.NewsList.Count;

            LogResponse(response);
            return(response);
        }