public static HotelBookingDetailResponse DetailService(string CRefNo) { var UName = ConfigurationSettings.AppSettings["TBOUserName"]; var UPass = ConfigurationSettings.AppSettings["TBOPassword"]; IHotelService proxy = TBOCredentials.CreateProxy(); HotelBookingDetailRequest req = new HotelBookingDetailRequest { Credentials = new AuthenticationData() { UserName = UName, Password = UPass }, //BookingId = BookId, //ConfirmationNo = ConfirmNo, ClientReferenceNumber = CRefNo }; var sid = new Guid(); ProviderLogger.LogBookingDetailReq(req, sid.ToString()); HotelBookingDetailResponse resp = new HotelBookingDetailResponse(); resp = proxy.HotelBookingDetail(req); ProviderLogger.LogBookingDetailRsp(resp, sid.ToString()); return(resp); }
public static HotelCancelResponse Cancel(string ConfirmNo) { var UName = ConfigurationSettings.AppSettings["TBOUserName"]; var UPass = ConfigurationSettings.AppSettings["TBOPassword"]; HotelCancelRequest req = new HotelCancelRequest { Credentials = new AuthenticationData() { UserName = UName, Password = UPass }, //RequestType = "HotelCancel", ConfirmationNo = ConfirmNo, Remarks = "test cancel" }; IHotelService proxy = TBOCredentials.CreateProxy(); var sid = new Guid(); ProviderLogger.LogHotelCancelReq(req, sid.ToString()); HotelCancelResponse resp = new HotelCancelResponse(); resp = proxy.HotelCancel(req); ProviderLogger.LogHotelCancelResp(resp, sid.ToString()); return(resp); }
public static HotelSearchResponse Search(HotelSearchRequest req, string SID) { var UName = ConfigurationSettings.AppSettings["TBOUserName"]; var UPass = ConfigurationSettings.AppSettings["TBOPassword"]; IHotelService proxy = TBOCredentials.CreateProxy(); req.Credentials = new AuthenticationData() { UserName = UName, Password = UPass }; ProviderLogger.LogSearchProviderReq(req, SID); HotelSearchResponse resp = new HotelSearchResponse(); Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); resp = proxy.HotelSearch(req); stopWatch.Stop(); TimeSpan ts1 = stopWatch.Elapsed; ProviderLogger.LogSearchProviderRsp(resp, SID, ts1.ToString()); return(resp); }
public static HotelRoomAvailabilityResponse Availabilty(string SessionId, int ResIndex, string HotelCode, string SID) { var UName = ConfigurationSettings.AppSettings["TBOUserName"]; var UPass = ConfigurationSettings.AppSettings["TBOPassword"]; HotelRoomAvailabilityRequest req = new HotelRoomAvailabilityRequest { SessionId = SessionId, ResultIndex = ResIndex, HotelCode = HotelCode, IsCancellationPolicyRequired = true, // already come in Pricing Credentials = new AuthenticationData() { UserName = UName, Password = UPass } }; ProviderLogger.LogRoomAvailabiltyReq(req, SID); IHotelService proxy = TBOCredentials.CreateProxy(); HotelRoomAvailabilityResponse resp = new HotelRoomAvailabilityResponse(); resp = proxy.AvailableHotelRooms(req); ProviderLogger.LogRoomAvailabilityProviderRsp(resp, SID); return(resp); }
public static HotelBookResponse Booking(HotelBookRequest req, string SID) { var UName = ConfigurationSettings.AppSettings["TBOUserName"]; var UPass = ConfigurationSettings.AppSettings["TBOPassword"]; IHotelService proxy = TBOCredentials.CreateProxy(); req.Credentials = new AuthenticationData() { UserName = UName, Password = UPass }; req.RestrictDuplicateBooking = true; ProviderLogger.LogHotelBookReq(req, SID); HotelBookResponse resp = new HotelBookResponse(); Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); resp = proxy.HotelBook(req); stopwatch.Stop(); TimeSpan ts1 = stopwatch.Elapsed; TimeSpan baseInterval = new TimeSpan(0, 0, 60); if (ts1 > baseInterval) { BookDetail.DetailService(req.ClientReferenceNumber); } ProviderLogger.LogHotelBookResp(resp, SID); return(resp); }
private Startup() { IConfigurationBuilder configurationBuilder = new ConfigurationBuilder().AddJsonFile("appsettings.json"); if (Environment.GetEnvironmentVariable("Environment") == "Development") { configurationBuilder.AddUserSecrets <Startup>(); } else { Logger.LogInformation($"Start loading encyption keys"); Configuration = configurationBuilder.Build(); string address = Environment.GetEnvironmentVariable("KeySource") ?? Configuration["KeySource"]; configurationBuilder.AddInMemoryCollection(new KeyLoader(address, new AesRsaProtector()).GetKeys()); Logger.LogInformation($"Encyption keys loaded"); } Configuration = configurationBuilder.Build(); IServiceCollection services = new ServiceCollection(); Storage storage = Enum.Parse <Storage>(Environment.GetEnvironmentVariable("Storage") ?? Configuration["Storage"]); Logger.LogInformation($"Storage type: {storage}"); services.AddTransient <IProtector, AesRsaProtector>(); Logger.LogInformation($"Protector type: Aes+Rsa"); ProviderLogger.CreateInstance(Configuration["logKey"], Configuration["logVector"]); Logger.LogInformation($"Provider log prottection enabled"); switch (storage) { case Storage.Files: services.AddSingleton <ICaptcha, SimpleCaptcha>(); Logger.LogInformation("Using captcha from prepeared files"); services.AddSingleton <IAuthorization, UserFileStorage>(); services.AddSingleton <IStorageFactory, FileStorageFactory>(); Logger.LogWarning("Password hashing disabled in this configuration"); break; case Storage.InternalDB: services.AddDbContext <StorageContext>(options => options.UseSqlite(GetInternalConnectionString())); AddDBConfigurationComponents(services); break; case Storage.ExternalDB: services.AddDbContext <StorageContext>(options => options.UseMySql(GetExternalConnectionString())); AddDBConfigurationComponents(services); break; } Services = services.BuildServiceProvider(); }
/// <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) ); } }
public static AvailabilityAndPricingResponse PricingService(AvailabilityAndPricingRequest req, string SID) { var UName = ConfigurationSettings.AppSettings["TBOUserName"]; var UPass = ConfigurationSettings.AppSettings["TBOPassword"]; req.Credentials = new AuthenticationData() { UserName = UName, Password = UPass }; IHotelService proxy = TBOCredentials.CreateProxy(); ProviderLogger.LogAvailablityPricingReq(req, SID); AvailabilityAndPricingResponse resp = new AvailabilityAndPricingResponse(); resp = proxy.AvailabilityAndPricing(req); ProviderLogger.LogAvailablityPricingProviderRsp(resp, SID); return(resp); }
/// <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); }