/// <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) ); } }
/// <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) ); } } }
internal GetFavoriteAmountsResponse GetFavoriteAmounts(GetFavoriteAmountsRequest request) { LogRequest(request); var response = new GetFavoriteAmountsResponse(); var sessionId = GetSessionId(request, out errorMessage); if (errorMessage != ErrorMessagesMnemonics.None) { response.ResponseCode = (int)errorMessage; response.ResponseMessage = errorMessage.ToDescription(); return(response); } try { var platformId = Convert.ToInt32(request.Platform); //1 var countryId = Convert.ToInt32(ConfigurationManager.AppSettings["CountryId"]); //10 //Platform products. var productList = new ServiceExecutionDelegator <GetProductListResponseBody, GetProductListRequestBody>(). ResolveRequest(new GetProductListRequestBody() { AuthenticationData = new AuthenticationData() { Username = request.AuthenticationData.Username, Password = request.AuthenticationData.Password, SessionID = sessionId }, Agent = request.Agent, DeviceType = request.DeviceType }, request.Platform, ApiServiceName.GetProductList); if (productList.ProductList == null) { response = new GetFavoriteAmountsResponse() { ResponseCode = 99, ResponseMessage = "Error: El usuario no tiene productos asignados en la plataforma.", TransactionID = 0 }; } else { var dm = new MacroProductDataManager(); response.FavoriteAmounts = dm.GetFavoriteAmounts(countryId); response.ResponseCode = 0; response.ResponseMessage = "Exito."; response.TransactionID = 0; } } catch (Exception e) { ProviderLogger.ExceptionLow(() => TagValue.New().Message("Exception trying to serve KINACU Operation").Exception(e)); } LogResponse(response); return(response); }
public DataContract.Macro.GetMacroProductListByCategoryResponse GetMacroProductsByCategory(DataContract.Macro.GetMacroProductListRequest request) { LogRequest(request); var response = new DataContract.Macro.GetMacroProductListByCategoryResponse(); var sessionId = GetSessionId(request, out errorMessage); logger.InfoLow("[API] [" + sessionId + "] [MacroProductProvider] [SEND-DATA] GetMacroProductsByCategory {sessionId = " + sessionId + ", UserId=" + request.Agent + ", DeviceType=" + request.DeviceType + "}"); if (errorMessage != ErrorMessagesMnemonics.None) { response.ResponseCode = (int)errorMessage; response.ResponseMessage = errorMessage.ToDescription(); logger.InfoLow("[API Binwus] [" + sessionId + "] [MacroProductProvider] [SEND-DATA] GetMacroProductsByCategory Error: " + errorMessage.ToDescription()); return(response); } try { var platformId = Convert.ToInt32(request.Platform); //1 var countryId = Convert.ToInt32(ConfigurationManager.AppSettings["CountryId"]); //10 logger.InfoLow("[API BinwusA] [MacroProductProvider]"); //Platform products. var productList = new ServiceExecutionDelegator <GetProductListResponseBody, GetProductListRequestBody>(). ResolveRequest(new GetProductListRequestBody() { AuthenticationData = new AuthenticationData() { Username = request.AuthenticationData.Username, Password = request.AuthenticationData.Password, SessionID = sessionId }, Agent = request.Agent, DeviceType = request.DeviceType }, request.Platform, ApiServiceName.GetProductList); logger.InfoLow("[API BinwusB] [MacroProductProvider]"); if (productList.ProductList == null) { response = new GetMacroProductListByCategoryResponse { ResponseCode = 99, ResponseMessage = "Error: El usuario no tiene productos asignados en la plataforma.", TransactionID = 0 }; logger.InfoLow("[API Binwus1] [" + sessionId + "] [MacroProductProvider] [SEND-DATA] GetMacroProductsByCategory Error: El usuario no tiene productos asignados en la plataforma."); } else { logger.InfoLow("[API BinwusC.] [MacroProductProvider]"); var dm = new Movilway.API.Data.MacroProduct.MacroProductDataManager(); logger.InfoLow("[API BinwusD.] [MacroProductProvider]"); response = dm.GetMacroProductsByCategory(platformId, countryId, productList.ProductList, request.DeviceType); logger.InfoLow("[API BinwusE.] [MacroProductProvider]"); logger.InfoLow("[API Binwus2] [" + sessionId + "] [MacroProductProvider] [RECV-DATA] GetMacroProductsByCategory {response={" + productList.ProductList.ToString() + "}}"); response.ResponseCode = 0; response.ResponseMessage = "Exito."; response.TransactionID = 0; } } catch (Exception e) { logger.InfoLow("[API Binwus3] [" + sessionId + "] [MacroProductProvider] [RECV-DATA] GetMacroProductsByCategory Error: " + e.Message); ProviderLogger.ExceptionLow(() => TagValue.New().Message("Exception trying to serve KINACU Operation").Exception(e)); } LogResponse(response); return(response); }
/// <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); }