public Member_Action Create(CoreHelper.Enum.MemberActionType MemberActionType, string description) { var MemberID = Convert.ToInt32(CookieHelper.UID); Member_Action member_Action = new Member_Action() { MemberID = MemberID, ActionType = (int)MemberActionType, AddTime = DateTime.Now, Description = description, IP = HttpHelper.IP }; DB_Service.Add<Member_Action>(member_Action); DB_Service.Commit(); return member_Action; }
/// <summary> /// Reads the configuration from the config file and converts it to custom /// config objects which the end developer will use to get or set the properties. /// </summary> /// <returns>The custom config object.</returns> public IppConfiguration GetConfiguration() { IppConfiguration ippConfig = new IppConfiguration(); #if !NETSTANDARD2_0 IppConfigurationSection ippConfigurationSection = IppConfigurationSection.Instance; if (ippConfigurationSection == null) { ippConfig.Logger = new Logger { CustomLogger = new TraceLogger(), RequestLog = new RequestLog { EnableRequestResponseLogging = false, ServiceRequestLoggingLocation = System.IO.Path.GetTempPath() } }; ippConfig.Message = new Message { Request = new Request { CompressionFormat = CompressionFormat.GZip, SerializationFormat = SerializationFormat.Xml//do not change this as it will break code for devs }, Response = new Response { CompressionFormat = CompressionFormat.GZip, SerializationFormat = SerializationFormat.Json } }; ippConfig.BaseUrl = new BaseUrl { Qbo = null, Ips = null, OAuthAccessTokenUrl = null, UserNameAuthentication = null }; ippConfig.MinorVersion = new MinorVersion { Qbo = null }; ippConfig.VerifierToken = new VerifierToken { Value = null }; return(ippConfig); } ippConfig.Logger = new Logger(); ippConfig.Logger.RequestLog = new RequestLog(); ippConfig.Logger.RequestLog.EnableRequestResponseLogging = ippConfigurationSection.Logger.RequestLog.EnableRequestResponseLogging; if (string.IsNullOrEmpty(ippConfigurationSection.Logger.RequestLog.RequestResponseLoggingDirectory)) { ippConfig.Logger.RequestLog.ServiceRequestLoggingLocation = Path.GetTempPath(); } else { string location = ippConfigurationSection.Logger.RequestLog.RequestResponseLoggingDirectory; if (!Directory.Exists(location)) { IdsException exception = new IdsException(Properties.Resources.ValidDirectoryPathMessage, new DirectoryNotFoundException()); IdsExceptionManager.HandleException(exception); } ippConfig.Logger.RequestLog.ServiceRequestLoggingLocation = ippConfigurationSection.Logger.RequestLog.RequestResponseLoggingDirectory; } if (!string.IsNullOrEmpty(ippConfigurationSection.Logger.CustomLogger.Name) && !string.IsNullOrEmpty(ippConfigurationSection.Logger.CustomLogger.Type) && ippConfigurationSection.Logger.CustomLogger.Enable) { Type customerLoggerType = Type.GetType(ippConfigurationSection.Logger.CustomLogger.Type); ippConfig.Logger.CustomLogger = Activator.CreateInstance(customerLoggerType) as ILogger; } else { ippConfig.Logger.CustomLogger = new TraceLogger(); } switch (ippConfigurationSection.Security.Mode) { case SecurityMode.OAuth: OAuth2RequestValidator validator = new OAuth2RequestValidator( ippConfigurationSection.Security.OAuth.AccessToken); ippConfig.Security = validator; break; case SecurityMode.Custom: if (!string.IsNullOrEmpty(ippConfigurationSection.Security.CustomSecurity.Name) && !string.IsNullOrEmpty(ippConfigurationSection.Security.CustomSecurity.Type) && ippConfigurationSection.Security.CustomSecurity.Enable) { Type customSecurityType = Type.GetType(ippConfigurationSection.Security.CustomSecurity.Type); string[] paramateres = ippConfigurationSection.Security.CustomSecurity.Params.Split(','); ippConfig.Security = Activator.CreateInstance(customSecurityType, paramateres) as IRequestValidator; } break; } //// TODO : This will not be used now. ////if (!string.IsNullOrEmpty(ippConfigurationSection.Message.CustomSerializer.Name) && !string.IsNullOrEmpty(ippConfigurationSection.Message.CustomSerializer.Type) && ippConfigurationSection.Message.CustomSerializer.Enable) ////{ //// Type customSerializerType = Type.GetType(ippConfigurationSection.Message.CustomSerializer.Type); //// IEntitySerializer entitySerializer = Activator.CreateInstance(customSerializerType) as IEntitySerializer; //// if (ippConfigurationSection.Message.Request.SerializationFormat == SerializationFormat.Custom) //// { //// ippConfig.Message.Request.Serializer = entitySerializer; //// } //// if (ippConfigurationSection.Message.Response.SerializationFormat == SerializationFormat.Custom) //// { //// ippConfig.Message.Response.Serializer = entitySerializer; //// } ////} ippConfig.Message = new Message(); ippConfig.Message.Request = new Request(); ippConfig.Message.Response = new Response(); switch (ippConfigurationSection.Message.Request.CompressionFormat) { case Intuit.Ipp.Utility.CompressionFormat.None: ippConfig.Message.Request.CompressionFormat = CompressionFormat.None; break; case Intuit.Ipp.Utility.CompressionFormat.DEFAULT: case Intuit.Ipp.Utility.CompressionFormat.GZip: ippConfig.Message.Request.CompressionFormat = CompressionFormat.GZip; break; case Intuit.Ipp.Utility.CompressionFormat.Deflate: ippConfig.Message.Request.CompressionFormat = CompressionFormat.Deflate; break; default: break; } switch (ippConfigurationSection.Message.Response.CompressionFormat) { case Intuit.Ipp.Utility.CompressionFormat.None: ippConfig.Message.Response.CompressionFormat = CompressionFormat.None; break; case Intuit.Ipp.Utility.CompressionFormat.DEFAULT: case Intuit.Ipp.Utility.CompressionFormat.GZip: ippConfig.Message.Response.CompressionFormat = CompressionFormat.GZip; break; case Intuit.Ipp.Utility.CompressionFormat.Deflate: ippConfig.Message.Response.CompressionFormat = CompressionFormat.Deflate; break; } switch (ippConfigurationSection.Message.Request.SerializationFormat) { case Intuit.Ipp.Utility.SerializationFormat.DEFAULT: case Intuit.Ipp.Utility.SerializationFormat.Xml: ippConfig.Message.Request.SerializationFormat = SerializationFormat.Xml; //do not change this as it will break code for devs break; case Intuit.Ipp.Utility.SerializationFormat.Json: ippConfig.Message.Request.SerializationFormat = SerializationFormat.Json; break; case Intuit.Ipp.Utility.SerializationFormat.Custom: ippConfig.Message.Request.SerializationFormat = SerializationFormat.Custom; break; } switch (ippConfigurationSection.Message.Response.SerializationFormat) { case Intuit.Ipp.Utility.SerializationFormat.Xml: ippConfig.Message.Response.SerializationFormat = SerializationFormat.Xml; break; case Intuit.Ipp.Utility.SerializationFormat.DEFAULT: case Intuit.Ipp.Utility.SerializationFormat.Json: ippConfig.Message.Response.SerializationFormat = SerializationFormat.Json; break; case Intuit.Ipp.Utility.SerializationFormat.Custom: ippConfig.Message.Response.SerializationFormat = SerializationFormat.Custom; break; } switch (ippConfigurationSection.Retry.Mode) { case RetryMode.Linear: if (!CoreHelper.IsInvalidaLinearRetryMode( ippConfigurationSection.Retry.LinearRetry.RetryCount, ippConfigurationSection.Retry.LinearRetry.RetryInterval)) { ippConfig.RetryPolicy = new IntuitRetryPolicy( ippConfigurationSection.Retry.LinearRetry.RetryCount, ippConfigurationSection.Retry.LinearRetry.RetryInterval); } break; case RetryMode.Incremental: if (!CoreHelper.IsInvalidaIncrementalRetryMode( ippConfigurationSection.Retry.IncrementatlRetry.RetryCount, ippConfigurationSection.Retry.IncrementatlRetry.InitialInterval, ippConfigurationSection.Retry.IncrementatlRetry.Increment)) { ippConfig.RetryPolicy = new IntuitRetryPolicy( ippConfigurationSection.Retry.IncrementatlRetry.RetryCount, ippConfigurationSection.Retry.IncrementatlRetry.InitialInterval, ippConfigurationSection.Retry.IncrementatlRetry.Increment); } break; case RetryMode.Exponential: if (!CoreHelper.IsInvalidaExponentialRetryMode( ippConfigurationSection.Retry.ExponentialRetry.RetryCount, ippConfigurationSection.Retry.ExponentialRetry.MinBackoff, ippConfigurationSection.Retry.ExponentialRetry.MaxBackoff, ippConfigurationSection.Retry.ExponentialRetry.DeltaBackoff)) { ippConfig.RetryPolicy = new IntuitRetryPolicy( ippConfigurationSection.Retry.ExponentialRetry.RetryCount, ippConfigurationSection.Retry.ExponentialRetry.MinBackoff, ippConfigurationSection.Retry.ExponentialRetry.MaxBackoff, ippConfigurationSection.Retry.ExponentialRetry.DeltaBackoff); } break; } ippConfig.BaseUrl = new BaseUrl(); ippConfig.BaseUrl.Qbo = ippConfigurationSection.Service.BaseUrl.Qbo; ippConfig.BaseUrl.Ips = ippConfigurationSection.Service.BaseUrl.Ips; ippConfig.BaseUrl.OAuthAccessTokenUrl = ippConfigurationSection.Service.BaseUrl.OAuthAccessTokenUrl; ippConfig.BaseUrl.UserNameAuthentication = ippConfigurationSection.Service.BaseUrl.UserNameAuthentication; ippConfig.MinorVersion = new MinorVersion(); ippConfig.MinorVersion.Qbo = ippConfigurationSection.Service.MinorVersion.Qbo; ippConfig.VerifierToken = new VerifierToken(); ippConfig.VerifierToken.Value = ippConfigurationSection.WebhooksService.WebhooksVerifier.Value; #endif #if NETSTANDARD2_0 //Setting defaults for configurations #region defaults ippConfig.Logger = new Logger { CustomLogger = new TraceLogger(), RequestLog = new RequestLog { EnableRequestResponseLogging = false, ServiceRequestLoggingLocation = System.IO.Path.GetTempPath() } }; ippConfig.Message = new Message { Request = new Request { CompressionFormat = CompressionFormat.GZip, SerializationFormat = SerializationFormat.Json }, Response = new Response { CompressionFormat = CompressionFormat.GZip, SerializationFormat = SerializationFormat.Json } }; ippConfig.BaseUrl = new BaseUrl { Qbo = null, Ips = null, OAuthAccessTokenUrl = null, UserNameAuthentication = null }; ippConfig.MinorVersion = new MinorVersion { Qbo = null }; ippConfig.VerifierToken = new VerifierToken { Value = null }; #endregion //ippConfig.Logger = new Logger(); //ippConfig.Logger.RequestLog = new RequestLog(); //Read all appsettings.json sections var loggerSettings = builder.GetSection("Logger").GetSection("RequestLog"); var customLoggerSettings = builder.GetSection("CustomLogger").GetSection("RequestLog"); var securitySettings = builder.GetSection("Security").GetSection("Mode"); var securityOauthSettings = builder.GetSection("Security").GetSection("Mode").GetSection("OAuth"); var securityCustomSettings = builder.GetSection("Security").GetSection("Mode").GetSection("Custom"); var messageRequestSettings = builder.GetSection("Message").GetSection("Request"); var messageResponseSettings = builder.GetSection("Message").GetSection("Response"); var retrySettings = builder.GetSection("Retry").GetSection("Mode"); var retrySettingsLinear = builder.GetSection("Retry").GetSection("Mode").GetSection("LinearRetry"); var retrySettingsIncremental = builder.GetSection("Retry").GetSection("Mode").GetSection("IncrementalRetry"); var retrySettingsExponential = builder.GetSection("Retry").GetSection("Mode").GetSection("ExponentialRetry"); var serviceSettings = builder.GetSection("Service"); var serviceBaseUrlSettings = builder.GetSection("Service").GetSection("BaseUrl"); var serviceMinorversionSettings = builder.GetSection("Service").GetSection("Minorversion"); var webhooksVerifierTokenSettings = builder.GetSection("WebhooksService").GetSection("VerifierToken"); if (!string.IsNullOrEmpty(loggerSettings["LogDirectory"]) && Convert.ToBoolean(loggerSettings["Enablelogs"]) == true) { ippConfig.Logger.RequestLog.EnableRequestResponseLogging = Convert.ToBoolean(loggerSettings["Enablelogs"]); string location = loggerSettings["LogDirectory"]; if (!Directory.Exists(location)) { IdsException exception = new IdsException(Properties.Resources.ValidDirectoryPathMessage, new DirectoryNotFoundException()); IdsExceptionManager.HandleException(exception); } ippConfig.Logger.RequestLog.ServiceRequestLoggingLocation = loggerSettings["LogDirectory"]; } if (!string.IsNullOrEmpty(customLoggerSettings["Name"]) && !string.IsNullOrEmpty(customLoggerSettings["Type"]) && Convert.ToBoolean(customLoggerSettings["Enable"]) == true) { Type customerLoggerType = Type.GetType(customLoggerSettings["Type"]); ippConfig.Logger.CustomLogger = Activator.CreateInstance(customerLoggerType) as ILogger; } else { ippConfig.Logger.CustomLogger = new TraceLogger(); } if (!string.IsNullOrEmpty(securityOauthSettings["AccessToken"]) && Convert.ToBoolean(securityOauthSettings["Enable"]) == true) { OAuth2RequestValidator validator = new OAuth2RequestValidator( securityOauthSettings["AccessToken"]); ippConfig.Security = validator; } else if (securityCustomSettings["Enable"] == "true") { if (!string.IsNullOrEmpty(securityCustomSettings["Name"]) && !string.IsNullOrEmpty(securityCustomSettings["Type"])) { Type customSecurityType = Type.GetType(securityCustomSettings["Type"]); if (!string.IsNullOrEmpty(securityCustomSettings["Params"])) { string[] paramateres = securityCustomSettings["Params"].Split(','); ippConfig.Security = Activator.CreateInstance(customSecurityType, paramateres) as IRequestValidator; } } } ippConfig.Message = new Message(); ippConfig.Message.Request = new Request(); ippConfig.Message.Response = new Response(); if (!string.IsNullOrEmpty(messageRequestSettings["CompressionFormat"])) { switch (Enum.Parse(typeof(Utility.CompressionFormat), messageRequestSettings["CompressionFormat"])) { case Intuit.Ipp.Utility.CompressionFormat.None: ippConfig.Message.Request.CompressionFormat = CompressionFormat.None; break; case Intuit.Ipp.Utility.CompressionFormat.DEFAULT: case Intuit.Ipp.Utility.CompressionFormat.GZip: ippConfig.Message.Request.CompressionFormat = CompressionFormat.GZip; break; case Intuit.Ipp.Utility.CompressionFormat.Deflate: ippConfig.Message.Request.CompressionFormat = CompressionFormat.Deflate; break; default: break; } } if (!string.IsNullOrEmpty(messageResponseSettings["CompressionFormat"])) { switch (Enum.Parse(typeof(Utility.CompressionFormat), messageResponseSettings["CompressionFormat"])) { case Intuit.Ipp.Utility.CompressionFormat.None: ippConfig.Message.Response.CompressionFormat = CompressionFormat.None; break; case Intuit.Ipp.Utility.CompressionFormat.DEFAULT: case Intuit.Ipp.Utility.CompressionFormat.GZip: ippConfig.Message.Response.CompressionFormat = CompressionFormat.GZip; break; case Intuit.Ipp.Utility.CompressionFormat.Deflate: ippConfig.Message.Response.CompressionFormat = CompressionFormat.Deflate; break; } } if (!string.IsNullOrEmpty(messageRequestSettings["SerializationFormat"])) { switch (Enum.Parse(typeof(Utility.SerializationFormat), messageRequestSettings["SerializationFormat"])) { case Intuit.Ipp.Utility.SerializationFormat.DEFAULT: case Intuit.Ipp.Utility.SerializationFormat.Xml: ippConfig.Message.Request.SerializationFormat = SerializationFormat.Xml; break; case Intuit.Ipp.Utility.SerializationFormat.Json: ippConfig.Message.Request.SerializationFormat = SerializationFormat.Json; break; case Intuit.Ipp.Utility.SerializationFormat.Custom: ippConfig.Message.Request.SerializationFormat = SerializationFormat.Custom; break; } } if (!string.IsNullOrEmpty(messageResponseSettings["SerializationFormat"])) { switch (Enum.Parse(typeof(Utility.SerializationFormat), messageResponseSettings["SerializationFormat"])) { case Intuit.Ipp.Utility.SerializationFormat.Xml: ippConfig.Message.Response.SerializationFormat = SerializationFormat.Xml; break; case Intuit.Ipp.Utility.SerializationFormat.DEFAULT: case Intuit.Ipp.Utility.SerializationFormat.Json: ippConfig.Message.Response.SerializationFormat = SerializationFormat.Json; break; case Intuit.Ipp.Utility.SerializationFormat.Custom: ippConfig.Message.Response.SerializationFormat = SerializationFormat.Custom; break; } } if ((!string.IsNullOrEmpty(retrySettingsLinear["Enable"])) && Convert.ToBoolean(retrySettingsLinear["Enable"]) == true) { if (!string.IsNullOrEmpty(retrySettingsLinear["RetryCount"]) && !string.IsNullOrEmpty(retrySettingsLinear["RetryInterval"])) { if (!CoreHelper.IsInvalidaLinearRetryMode( Convert.ToInt32(retrySettingsLinear["RetryCount"]), TimeSpan.Parse(retrySettingsLinear["RetryInterval"]))) { ippConfig.RetryPolicy = new IntuitRetryPolicy( Convert.ToInt32(retrySettingsLinear["RetryCount"]), TimeSpan.Parse(retrySettingsLinear["RetryInterval"])); } } } else if ((!string.IsNullOrEmpty(retrySettingsIncremental["Enable"])) && Convert.ToBoolean(retrySettingsIncremental["Enable"]) == true) { if (!string.IsNullOrEmpty(retrySettingsIncremental["RetryCount"]) && !string.IsNullOrEmpty(retrySettingsIncremental["InitialInterval"]) && !string.IsNullOrEmpty(retrySettingsIncremental["Increment"])) { if (!CoreHelper.IsInvalidaIncrementalRetryMode( Convert.ToInt32(retrySettingsIncremental["RetryCount"]), TimeSpan.Parse(retrySettingsIncremental["InitialInterval"]), TimeSpan.Parse(retrySettingsIncremental["Increment"]))) { ippConfig.RetryPolicy = new IntuitRetryPolicy( Convert.ToInt32(retrySettingsIncremental["RetryCount"]), TimeSpan.Parse(retrySettingsIncremental["InitialInterval"]), TimeSpan.Parse(retrySettingsIncremental["Increment"])); } } } else if ((!string.IsNullOrEmpty(retrySettingsExponential["Enable"])) && Convert.ToBoolean(retrySettingsExponential["Enable"]) == true) { if (!string.IsNullOrEmpty(retrySettingsExponential["RetryCount"]) && !string.IsNullOrEmpty(retrySettingsExponential["MinBackoff"]) && !string.IsNullOrEmpty(retrySettingsExponential["MaxBackoff"]) && !string.IsNullOrEmpty(retrySettingsExponential["DeltaBackoff"])) { if (!CoreHelper.IsInvalidaExponentialRetryMode( Convert.ToInt32(retrySettingsExponential["RetryCount"]), TimeSpan.Parse(retrySettingsExponential["MinBackoff"]), TimeSpan.Parse(retrySettingsExponential["MaxBackoff"]), TimeSpan.Parse(retrySettingsExponential["DeltaBackoff"]))) { ippConfig.RetryPolicy = new IntuitRetryPolicy( Convert.ToInt32(retrySettingsExponential["RetryCount"]), TimeSpan.Parse(retrySettingsExponential["MinBackoff"]), TimeSpan.Parse(retrySettingsExponential["MaxBackoff"]), TimeSpan.Parse(retrySettingsExponential["DeltaBackoff"])); } } } //ippConfig.BaseUrl = new BaseUrl(); ippConfig.BaseUrl.Qbo = serviceBaseUrlSettings["Qbo"]; ippConfig.BaseUrl.Ips = serviceBaseUrlSettings["Ips"]; ippConfig.BaseUrl.OAuthAccessTokenUrl = serviceBaseUrlSettings["OAuthAccessTokenUrl"]; ippConfig.BaseUrl.UserNameAuthentication = serviceBaseUrlSettings["UserNameAuthentication"]; //ippConfig.MinorVersion = new MinorVersion(); ippConfig.MinorVersion.Qbo = serviceMinorversionSettings["Qbo"]; //ippConfig.VerifierToken = new VerifierToken(); ippConfig.VerifierToken.Value = webhooksVerifierTokenSettings["Value"]; #endif //#if NETSTANDARD2_0 // //IppConfiguration ippConfig = new IppConfiguration(); // string temppath = Path.Combine(this.logPath, "Request-" + DateTime.Now.Ticks.ToString(CultureInfo.InvariantCulture) + ".txt"); // ippConfig.Logger = new Logger // { // RequestLog = new RequestLog // { // EnableRequestResponseLogging = true,//test // ServiceRequestLoggingLocation = temppath // } // }; //#endif return(ippConfig); }
/// <inheritdoc/> public void Resume() { if (_isPaused) { // Register keyboard hook _keyboardHookHandle = NativeMethods.SetWindowsHookEx(HookType.KeyboardLl, _keyboardHookProcHandle, CoreHelper.GetCurrentModuleHandle(), 0); _isPaused = false; // If returned handle is equal to 0, throw exception if ((int)_keyboardHookHandle == 0) { Logger.Instance.Fatal(new Exception("Keyboard hooking failed to start : returned keyboard hook handle is null")); } else { Logger.Instance.Information("Keyboard hooking started."); } } }
public override void Invoke(IHandlerContext context) { try { QunarUploadPolicyRequest qunarRequest = CoreHelper.ChangeToChild <UpLoadPolicyRequest, QunarUploadPolicyRequest>(context.Request); Dictionary <UploadTypeDetail, PolicyRecord> dicRec = new Dictionary <UploadTypeDetail, PolicyRecord>(); List <SeatDiscountDto> seatDiscountList = new List <SeatDiscountDto>(); if (qunarRequest.PolicyType != QunarPolicyType.COMMON) { SeatDiscountListResponse seatRep = JsonConvert.DeserializeObject <SeatDiscountListResponse>(CoreHelper.DoPost(System.Configuration.ConfigurationManager.AppSettings["SeatDiscountListUrl"], ""));//获取舱位折扣列表 seatDiscountList = seatRep.SeatDiscountList; } Dictionary <string, string> lstUploadedId = new Dictionary <string, string>(); #region 择要封装哪个节点 foreach (KeyValuePair <UploadTypeDetail, List <Policies> > item in qunarRequest.PolicyData) { if (item.Value.Count > 0) { Policies ps = item.Value.LastOrDefault(); //if (item.Key != UploadTypeDetail.IncrementalDelete) //{ item.Value.ForEach(x => { if (!lstUploadedId.ContainsKey(x.Id.ToString())) { lstUploadedId.Add(x.Id.ToString(), x.PartnerPolicyId); } }); // } dicRec.Add(item.Key, new PolicyRecord { LastPolicyId = ps.Id, LastUpdateTime = ps.UpdateTime }); DivideTask(item.Key, item.Value, qunarRequest, seatDiscountList, ChangeToQunarAddPolicy, ChangeToQunarDelPolicy);//开始多任务处理 } } #endregion string logPath = qunarRequest.FormatFilePath + "\\" + DateTime.Now.Year + "\\" + DateTime.Now.Month + "\\" + DateTime.Now.Day + "\\" + DateTime.Now.Hour + "\\" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".xml"; string zipPath = qunarRequest.FormatZipFilePath + "\\" + DateTime.Now.Year + "\\" + DateTime.Now.Month + "\\" + DateTime.Now.Day + "\\" + DateTime.Now.Hour + "\\" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".zip"; if (qunarAddPolicy.ToList().Count <= 0 && qunarDelPolicy.ToList().Count <= 0) { OnMiddlewareWorking(new EventMsg { Status = RunStatus.Normal, Msg = "经过去哪儿格式化组件筛选完后没有要上传的政策" }); return; } #region 保存上传记录 PolicyNotifyRequest notifyRequest = new PolicyNotifyRequest(); SaveNotifyResponse notifyRes = new SaveNotifyResponse(); notifyRequest = new PolicyNotifyRequest() { // DicRec = dicRec, UploadType = qunarRequest.UploadType, PolicyRec = context.UploadResponse.PolicyRec[qunarRequest.UploadType],//最后一条政策记录 Purchaser = PurchaserType.Qunar, NotifyResult = 0, FileNamePath = zipPath, ResponseParams = "", RequestParams = qunarRequest.SqlWhere, Remark = IPAddressHelper.GetInternalIP(), OperName = qunarRequest.OperName, UploadCount = qunarRequest.UploadCount, BeforePolicyRec = context.UploadResponse.BeforePolicyRecord == null ? new PolicyRecord() : context.UploadResponse.BeforePolicyRecord, CommisionMoney = qunarRequest.CommisionMoney, CommisionPoint = qunarRequest.CommsionPoint, UploadPolicyIds = lstUploadedId, PolicyType = (PoliciesType)Enum.Parse(typeof(PoliciesType), qunarRequest.PolicyType.ToString()) }; string notifyContent = CoreHelper.DoPost(System.Configuration.ConfigurationManager.AppSettings["SavePolicyNotifyUrl"].ToString(), notifyRequest); notifyRes = JsonConvert.DeserializeObject <SaveNotifyResponse>(notifyContent);//先查询一遍,获取要上传的政策 if (notifyRes.ErrCode == ResultType.Failed) { context.UploadResponse = new UploadPolicyResponse { ErrCode = PolicyService.Enums.ResultType.Failed, ErrMsg = "保存上传记录失败" }; return; } #endregion #region 封装去哪儿政策类 QunarPolicy policyBase = new QunarPolicy() { username = ConfigurationManager.AppSettings["QunarUsername"].ToString(), password = ConfigurationManager.AppSettings["QunarPassword"].ToString(), type = qunarRequest.PolicyType, execType = qunarRequest.UploadType == UploadType.FullUpload ? ExecType.FULL : ExecType.ADD, addPolicy = qunarAddPolicy.ToList(), //添加政策节点 deletePolicy = qunarDelPolicy.ToList(), //删除政策节点 ext = JsonConvert.SerializeObject(notifyRes.UploadStatusId) //保存xml文件路径 }; #endregion OnMiddlewareWorking(new EventMsg { Status = RunStatus.Normal, Msg = "封装去哪儿政策类成功,扩展信息:" + JsonConvert.SerializeObject(notifyRes.UploadStatusId) + ",开始序列化成功xml..." }); string xmlContent = XmlHelper.Serializer(typeof(QunarPolicy), policyBase); //序列化成xml CoreHelper.CreateFile(logPath, xmlContent); //创建文件 OnMiddlewareWorking(new EventMsg { Status = RunStatus.Normal, Msg = "序列化xml并创建文件成功,生成的xml文件路径:" + logPath + ",开始压缩并上传..." }); context.UploadResponse.FormatPolicyFilePath = logPath;//保存xml文件路径 context.UploadResponse.FormatPolicyZipFilePath = zipPath; context.UploadResponse.UploadStatusId = notifyRes.UploadStatusId; Next.Invoke(context); }catch (Exception ex) { OnMiddlewareWorking(new EventMsg { Status = RunStatus.Exception, Msg = "格式化去哪儿数据失败!" + JsonConvert.SerializeObject(ex) }); context.UploadResponse = new UploadPolicyResponse { ErrCode = PolicyService.Enums.ResultType.Failed, ErrMsg = "格式化去哪儿数据失败!", Excption = ex }; return; } }
public void ReceiveCallback(IAsyncResult ar) { var state = (SocketState)ar.AsyncState; var handler = state.Socket; SocketError socketError; var bytesRead = handler.EndReceive(ar, out socketError); if (socketError != SocketError.Success) { _logger.ErrorFormat("client [{0}]{1} error: {2}", state.Loginid, handler.RemoteEndPoint, socketError); handler.Close(); _states.Remove(state.Loginid); return; } if (bytesRead > 0) { state.Content.Write(state.Buffer, 0, bytesRead); if (!state.Buffer.EndWith(Message.EndTag, bytesRead)) { handler.BeginReceive(state.Buffer, 0, SocketState.BUFFER_SIZE, 0, out socketError, new AsyncCallback(ReceiveCallback), state); if (socketError != SocketError.Success) { _logger.ErrorFormat("client [{0}]{1} error: {2}", state.Loginid, handler.RemoteEndPoint, socketError); handler.Close(); _states.Remove(state.Loginid); return; } return; } Exception exception = null; var messages = CoreHelper.Try(() => Message.ParseData(state.Content.ToArray()), out exception, _logger); state.Content.SetLength(0); try { foreach (var message in messages) { _logger.DebugFormat("receive from {0}: {1}", handler.RemoteEndPoint, message); if (exception != null) { Send(state, new Message { MsgType = MsgType.Exception, Content = exception.Message }); } CoreHelper.Try(() => DealMessage(state, message), out exception, _logger); if (exception != null) { Send(state, new Message { MsgType = MsgType.Exception, Content = exception.Message }); } } handler.BeginReceive(state.Buffer, 0, SocketState.BUFFER_SIZE, 0, new AsyncCallback(ReceiveCallback), state); } catch (SocketException ex) { _logger.ErrorFormat("client [{0}]{1} error: {2}", state.Loginid, handler.RemoteEndPoint, ex.Message); handler.Close(); _states.Remove(state.Loginid); return; } } }
public object UpdateTour(int tourInfoId, int tourId, [FromBody] object requestBody) { var responseModel = new ResponseModel(); try { do { var body = requestBody != null ? JObject.Parse(requestBody.ToString() ?? "{}") : null; if (!CoreHelper.GetParameter(out var jsonStartDate, body, "StartDay", JTokenType.Date, ref responseModel, isNullable: true) || !CoreHelper.GetParameter(out var jsonEndDate, body, "EndDay", JTokenType.Date, ref responseModel, isNullable: true) || !CoreHelper.GetParameter(out var jsonMaxMember, body, "MaxMember", JTokenType.Integer, ref responseModel, isNullable: true) || !CoreHelper.GetParameter(out var jsonTotalDay, body, "TotalDay", JTokenType.Integer, ref responseModel, isNullable: true) || !CoreHelper.GetParameter(out var jsonTotalNight, body, "TotalNight", JTokenType.Integer, ref responseModel, isNullable: true) || !CoreHelper.GetParameter(out var jsonPrice, body, "Price", JTokenType.Float, ref responseModel, isNullable: true) || !CoreHelper.GetParameter(out var jsonName, body, "Name", JTokenType.String, ref responseModel, isNullable: true) || !CoreHelper.GetParameter(out var jsonTimelines, body, "Timelines", JTokenType.Array, ref responseModel) || !CoreHelper.GetParameter(out var jsonServices, body, "Services", JTokenType.Array, ref responseModel, isNullable: true)) { break; } if (_tourInfoService.TryGetTourInfoById(tourInfoId, out var tourInfo) != ErrorCode.Success || tourInfo == null) { throw new ExceptionWithMessage("Tour info not found."); } var userId = CoreHelper.GetUserId(HttpContext, ref responseModel); // User dont have permission if (tourInfo.CreateById != userId) { Response.StatusCode = 403; break; } var name = jsonName?.ToString(); var isStartDayParse = DateTime.TryParse(jsonStartDate?.ToString(), out var startDate); var isEndDayParse = DateTime.TryParse(jsonEndDate?.ToString(), out var endDate); var isMaxMemberParse = int.TryParse(jsonMaxMember?.ToString(), out var maxMember); var isTotalDayParsed = int.TryParse(jsonTotalDay?.ToString(), out var totalDay); var isTotalNightParsed = int.TryParse(jsonTotalNight?.ToString(), out var totalNight); var isPriceParsed = float.TryParse(jsonPrice?.ToString(), out var price); var services = jsonServices != null ? JsonConvert.DeserializeObject <string[]>(jsonServices.ToString()) : null; var timelines = jsonTimelines?.ToObject <List <TimeLine> >(); if (!_tourService.TryGetTour(userId, tourId, out var tour) || tour == null) { throw new ExceptionWithMessage("Tour not found."); } tour.Update( name: name !, timelines: timelines, startDay: isStartDayParse ? startDate : (DateTime?)null, endDay: isEndDayParse ? endDate : (DateTime?)null, totalDay: isTotalDayParsed ? totalDay : (int?)null, totalNight: isTotalNightParsed ? totalNight: (int?)null, maxMember: isMaxMemberParse ? maxMember : (int?)null, price: isPriceParsed ? price : (float?)null, services: services ); if (!_tourService.TryUpdateTour(tour)) { responseModel.FromErrorCode(ErrorCode.Fail); break; } responseModel.FromErrorCode(ErrorCode.Success); responseModel.Data = new JArray { JObject.FromObject(tour) }; } while (false); } catch (Exception ex) { responseModel.FromException(ex); } return(responseModel.ToJson()); }
public object UpdateTourInfo(int id, [FromBody] object requestBody) { var responseModel = new ResponseModel(); try { do { var errorCode = _tourInfoService.TryGetTourInfoById(id, out var tourInfo); if (errorCode != ErrorCode.Success) { responseModel.FromErrorCode(errorCode); break; } if (tourInfo == null) { responseModel.FromErrorCode(ErrorCode.TourNotFound); break; } var body = requestBody != null ? JObject.Parse(requestBody.ToString() ?? "{}") : null; if (!CoreHelper.GetParameter(out var jsonDestinationPlaceId, body, "DestinationPlaceId", JTokenType.Integer, ref responseModel, true) || !CoreHelper.GetParameter(out var jsonStartPlaceId, body, "StartPlaceId", JTokenType.Integer, ref responseModel, true) || !CoreHelper.GetParameter(out var jsonImages, body, "Images", JTokenType.Array, ref responseModel, true) || !CoreHelper.GetParameter(out var jsonName, body, "Name", JTokenType.String, ref responseModel, true)) { break; } var isDestinationPlaceId = int.TryParse(jsonDestinationPlaceId?.ToString(), out var destinationPlaceId); var isStartPlaceId = int.TryParse(jsonStartPlaceId?.ToString(), out var startPlaceId); var images = jsonImages != null ? JsonConvert.DeserializeObject <string[]>(jsonImages.ToString()) : null; tourInfo.Update( createById: null, name: jsonName?.ToString(), images: images !, startPlaceId: isStartPlaceId ? startPlaceId : (int?)null, destinatePlaceId: isDestinationPlaceId ? destinationPlaceId : (int?)null ); if (!_tourInfoService.TryUpdateTourInfo(tourInfo)) { responseModel.FromErrorCode(ErrorCode.Fail); break; } var userId = CoreHelper.GetUserId(HttpContext, ref responseModel); responseModel.FromErrorCode(ErrorCode.Success); responseModel.Data = new JArray { AddTourFullInfo(tourInfo, userId) }; } while (false); } catch (Exception ex) { responseModel.FromException(ex); } return(responseModel.ToJson()); }
public void OnBeforeActivate() { CoreHelper.SetSipButton(true); }
/// <summary> /// 保存回调结果 /// </summary> /// <param name="request"></param> /// <returns></returns> public SaveNotifyResponse SaveNotify(PolicyNotifyRequest request) { UpLoadRecordLib recLib = new UpLoadRecordLib(); UploadPolicyRecordLib policyLib = new UploadPolicyRecordLib(); UpLoadRecord rec = new UpLoadRecord(); rec.UploadFilePath = request.FileNamePath; rec.LastPolicyId = request.PolicyRec.LastPolicyId.ToString(); rec.LastUpdateTime = request.PolicyRec.LastUpdateTime.ToString("yyyy-MM-dd HH:mm:ss.fff"); rec.UploadType = request.UploadType.ToString(); rec.PurchaserType = request.Purchaser.ToString(); rec.ResponseParams = request.ResponseParams; rec.NotifyResult = request.NotifyResult; rec.CreateTime = DateTime.Now; rec.IsEnabled = 1; rec.Remark = request.Remark; rec.RequestParams = request.RequestParams; rec.OperName = request.OperName; rec.UploadCount = request.UploadCount; rec.BeforeLastPolicyId = request.BeforePolicyRec.LastPolicyId.ToString(); rec.BeforeLastUpdateTime = request.BeforePolicyRec.LastUpdateTime.ToString("yyyy-MM-dd HH:mm:ss.fff"); rec.PolicyType = (int)request.PolicyType; long r = recLib.Add(rec); if (r <= 0) { string name = "Qunar\\NotifyQunarPolicyIdsRecLog"; CoreHelper.SaveLastUpTimeAndId(string.Join(",", request.UploadPolicyIds.ToArray()), name); return(new SaveNotifyResponse { ErrCode = PolicyService.Enums.ResultType.Failed, ErrMsg = "保存回调结果失败:保存数据:" + JsonConvert.SerializeObject(rec) }); } List <string> lstSql = new List <string>(); foreach (KeyValuePair <string, string> item in request.UploadPolicyIds) { UploadPolicyRecord uPolicy = new UploadPolicyRecord(); uPolicy.CommisionMoney = request.CommisionMoney; uPolicy.CommsionPoint = request.CommisionPoint; uPolicy.Id = System.Guid.NewGuid(); uPolicy.UId = r; uPolicy.PolicyId = item.Key; uPolicy.PartenerPolicyId = item.Value; uPolicy.CreateTime = DateTime.Now; uPolicy.PolicyType = request.PolicyType.ToString(); lstSql.Add(policyLib.Add(uPolicy, false)); } if (lstSql.Count > 0) { int r2 = DbHelperSQL.ExecuteSqlTran(lstSql); if (r2 <= 0) { string name = "Qunar\\NotifyQunarPolicyIdsRecLog"; CoreHelper.SaveLastUpTimeAndId(DateTime.Now + ":保存上传政策id失败:" + string.Join(",", request.UploadPolicyIds.ToArray()), name); return(new SaveNotifyResponse { ErrCode = PolicyService.Enums.ResultType.Failed, ErrMsg = "保存回调结果失败:保存数据:" + JsonConvert.SerializeObject(rec) }); } } return(new SaveNotifyResponse { ErrCode = PolicyService.Enums.ResultType.Sucess, ErrMsg = "", UploadStatusId = r.ToString() }); }
public EmptyResponse UpdateNotify(UpdateNotifyRequest request) { try { UpLoadRecordLib recLib = new UpLoadRecordLib(); UploadPolicyRecordLib recPolicyLib = new UploadPolicyRecordLib(); PolicySyncRecLib syncLib = new PolicySyncRecLib(); request.UpdateStatusId = request.UpdateStatusId.Replace("\"", "").Replace("\\", ""); UpLoadRecord rec = recLib.GetModel(int.Parse(request.UpdateStatusId)); if (rec == null) { return(new EmptyResponse { ErrCode = PolicyService.Enums.ResultType.Failed, ErrMsg = "未找到此上传的记录!" }); } if (rec.OperName.ToLower() == "system") { if ((SuccessStatus)request.NotifyResult == SuccessStatus.Success) { recPolicyLib.BlukyUpdatePolicy(rec.Id.ToString(), true); recLib.Delete(rec.Id);//删除 } else { recPolicyLib.BlukyUpdatePolicy(rec.Id.ToString(), false); recLib.Delete(rec.Id);//删除 } return(new EmptyResponse { ErrCode = PolicyService.Enums.ResultType.Sucess }); } PurchaserType Purchaser = (PurchaserType)Enum.Parse(typeof(PurchaserType), rec.PurchaserType); UploadType uType = (UploadType)Enum.Parse(typeof(UploadType), rec.UploadType); #region 1.保存文件记录 if (request.IsSucess) { string timeAndId = Convert.ToDateTime(rec.LastUpdateTime).ToString("yyyy-MM-dd HH:mm:ss.fff") + "|" + rec.LastPolicyId.ToString(); // CoreHelper.CreateFile(System.Configuration.ConfigurationManager.AppSettings["NotifyErrLogPath"] + "\\" + System.Guid.NewGuid() + ".txt", "读取最后记录"+timeAndId);//创建文件 // File.WriteAllText("e://1.txt", timeAndId); string name = uType == UploadType.FullUpload ? rec.PurchaserType + "\\" + rec.PurchaserType + "FullPolicyRecLog" : rec.PurchaserType + "\\" + rec.PurchaserType + "IncrementPolicyRecLog"; CoreHelper.SaveLastUpTimeAndId(timeAndId, name); // CoreHelper.CreateFile(System.Configuration.ConfigurationManager.AppSettings["NotifyErrLogPath"] + "\\" + System.Guid.NewGuid() + ".txt", "保存最后记录成功");//创建文件 } #endregion #region 2.更新表中记录 rec.ResponseParams = request.ResponseParams; rec.NotifyResult = (int)request.NotifyResult; rec.FailedCount = request.NotifyResult == SuccessStatus.Failed ? rec.FailedCount + 1 : rec.FailedCount; rec.CompleteTime = DateTime.Now; rec.LastUpdateTime = DateTime.Now.ToString("yyyy-MM-dd") + " 0:00:00"; rec.LastPolicyId = "0"; bool r = recLib.Update(rec); if (!r) { return(new EmptyResponse { ErrCode = PolicyService.Enums.ResultType.Failed, ErrMsg = "更新记录失败!" }); } bool flag = false; if (request.NotifyResult == SuccessStatus.Failed || request.NotifyResult == SuccessStatus.Other) { flag = false; } else { flag = true; } recPolicyLib.BlukyUpdatePolicy(rec.Id.ToString(), flag); #endregion #region 3.批量更新已经上传完成的政策 if (request.IsSucess) { string selectSql = ""; int totalCount = 0; List <UploadPolicyRecord> lstUploadIds = recPolicyLib.GetModelList(" UId='" + rec.Id + "'"); List <string> lstAddPolicies = new List <string>(); lstUploadIds.ForEach(x => { lstAddPolicies.Add(x.PolicyId); }); //List<string> lstAddPolicies = rec.Remark.Split(',').ToList(); if (lstAddPolicies.Count > 0) { bool r2 = syncLib.BlukyUpdatePolicyUploaded(lstAddPolicies); if (!r) { return(new EmptyResponse { ErrCode = PolicyService.Enums.ResultType.Failed, ErrMsg = "批量把政策置为已上传失败!" }); } } } #endregion return(new EmptyResponse { ErrCode = PolicyService.Enums.ResultType.Sucess }); } catch (Exception ex) { return(new EmptyResponse { ErrCode = PolicyService.Enums.ResultType.Failed, ErrMsg = JsonConvert.SerializeObject(ex) }); } }
/// <summary> /// Entity Service supports multiple queries within a request. Use this method to perform multiple entity query operation. /// </summary> /// <param name="queryOperationValues">The simple query language string collection.</param> /// <typeparam name="TSource">Where TSource is IEntity.</typeparam> /// <returns>Returns a collection of entities for individual simple query.</returns> /// <exception cref="InvalidParameterException">If the parameter is null or empty or exceeds a maximum of five(5) queries.</exception> /// <exception cref="ValidationException">If the query syntax is incorrect.</exception> /// <exception cref="SerializationException">If there were serialization issues with the response from the service.</exception> /// <exception cref="IdsException">When service returned with an error information.</exception> /// <example> /// Usage: /// Use the query service created and invoke the ToIdsQuery method to obtain the simple query as string. /// <code> /// string customerQueryValue = customerContext.Where(c => c.MetaData.CreateTime > this.dateTime).ToIdsQuery(); /// string invoiceQueryValue = invoiceContext.Select(i => new { i.Id, i.status }).ToIdsQuery(); /// </code> /// Invoke the ExecuteMultipleEntityQueries method with the read only collection of the queries. This method can throw exception so surround the method with a try catch block. /// <code> /// <![CDATA[List<string> values = new List<string> { customerQueryValue, invoiceQueryValue };]]> /// try /// { /// <![CDATA[ReadOnlyCollection<ReadOnlyCollection<IEntity>> results = customerContext.ExecuteMultipleEntityQueries<IEntity>(values.AsReadOnly());]]> /// Iterate through the values obtained: /// foreach (var item in results) /// { /// // Read the values /// } /// } /// catch(IdsException) /// { /// // Perform logic here /// } /// </code> /// </example> public System.Collections.ObjectModel.ReadOnlyCollection <System.Collections.ObjectModel.ReadOnlyCollection <TSource> > ExecuteMultipleEntityQueries <TSource>(System.Collections.ObjectModel.ReadOnlyCollection <string> queryOperationValues) where TSource : IEntity { if (queryOperationValues == null || queryOperationValues.Count == 0) { throw new InvalidParameterException(string.Format(CultureInfo.InvariantCulture, "The parameter queryOperationValues cannot be null or empty.")); } if (queryOperationValues.Count > 5) { throw new InvalidParameterException(string.Format(CultureInfo.InvariantCulture, "Query Count exceeded. A maximum of 5 queries can be provided at a time.")); } string idsQuery = string.Empty; foreach (var item in queryOperationValues) { if (!string.IsNullOrWhiteSpace(item)) { idsQuery += item + ";"; } } // Buid the service uri string uri = string.Format(CultureInfo.InvariantCulture, "{0}/company/{1}/query", CoreConstants.VERSION, this.serviceContext.RealmId); // Creates request parameters RequestParameters parameters = null; parameters = new RequestParameters(uri, HttpVerbType.POST, CoreConstants.CONTENTTYPE_APPLICATIONTEXT); // Prepares request HttpWebRequest request = this.restHandler.PrepareRequest(parameters, idsQuery); string response = string.Empty; try { // Gets response response = this.restHandler.GetResponse(request); } catch (IdsException ex) { IdsExceptionManager.HandleException(ex); } // Check whether the response is null or empty and throw communication exception. CoreHelper.CheckNullResponseAndThrowException(response); // Deserialize object IntuitResponse restResponse = (IntuitResponse)this.responseSerializer.Deserialize <IntuitResponse>(response); QueryResponse[] queryResponses = restResponse.AnyIntuitObjects as QueryResponse[]; List <System.Collections.ObjectModel.ReadOnlyCollection <TSource> > returnValues = new List <System.Collections.ObjectModel.ReadOnlyCollection <TSource> >(); foreach (var queryResponse in queryResponses) { Type type = queryResponse.GetType(); List <TSource> entities = new List <TSource>(); PropertyInfo[] propertyInfoArray = type.GetProperties(); foreach (PropertyInfo propertyInfo in propertyInfoArray) { if (true == propertyInfo.PropertyType.IsArray) { object tempEntities = propertyInfo.GetValue(queryResponse, null); if (tempEntities != null) { object[] tempEntityArray = (object[])tempEntities; if (tempEntityArray.Length > 0) { foreach (object item in tempEntityArray) { entities.Add((TSource)item); } } } break; } } returnValues.Add(entities.AsReadOnly()); } this.serviceContext.IppConfiguration.Logger.CustomLogger.Log(Diagnostics.TraceLevel.Info, "Finished Executing Method FindAll."); return(returnValues.AsReadOnly()); }
/// <summary> /// Executes the Ids Query and returns the response. /// </summary> /// <param name="idsQuery">The string representation of ids query.</param> /// <param name="queryOperationType">Query Operation Type. Default value is query.</param> /// <returns>ReadOnly Collection fo items of type T.</returns> public System.Collections.ObjectModel.ReadOnlyCollection <T> ExecuteIdsQuery(string idsQuery, QueryOperationType queryOperationType = QueryOperationType.query) { // Validate Parameter if (string.IsNullOrWhiteSpace(idsQuery)) { throw new InvalidParameterException(string.Format(CultureInfo.InvariantCulture, "The parameter idsQuery cannot be null or empty.")); } // Buid the service uri string uri = string.Format(CultureInfo.InvariantCulture, "{0}/company/{1}/{2}", CoreConstants.VERSION, this.serviceContext.RealmId, queryOperationType); // Creates request parameters RequestParameters parameters = null; parameters = new RequestParameters(uri, HttpVerbType.POST, CoreConstants.CONTENTTYPE_APPLICATIONTEXT); // Prepares request HttpWebRequest request = this.restHandler.PrepareRequest(parameters, idsQuery); string response = string.Empty; try { // Gets response response = this.restHandler.GetResponse(request); } catch (IdsException ex) { IdsExceptionManager.HandleException(ex); } // Check whether the response is null or empty and throw communication exception. CoreHelper.CheckNullResponseAndThrowException(response); // Deserialize object IntuitResponse restResponse = (IntuitResponse)this.responseSerializer.Deserialize <IntuitResponse>(response); QueryResponse queryResponse = restResponse.AnyIntuitObject as QueryResponse; if (idsQuery.ToLower().Contains("count(*)")) { int totalCount = queryResponse.totalCount; List <T> dummyCountCollection = new List <T>(); for (int i = 0; i < totalCount; i++) { dummyCountCollection.Add((T)Activator.CreateInstance(typeof(T))); } System.Collections.ObjectModel.ReadOnlyCollection <T> countCollection = new System.Collections.ObjectModel.ReadOnlyCollection <T>(dummyCountCollection); return(countCollection); } List <T> entities = new List <T>(); if (queryResponse.maxResults > 0) { object tempEntities = queryResponse.AnyIntuitObjects; if (tempEntities != null) { object[] tempEntityArray = (object[])tempEntities; if (tempEntityArray.Length > 0) { foreach (object item in tempEntityArray) { entities.Add((T)item); } } } } /* Type type = queryResponse.GetType(); * List<T> entities = new List<T>(); * * PropertyInfo[] propertyInfoArray = type.GetProperties(); * * foreach (PropertyInfo propertyInfo in propertyInfoArray) * { * if (true == propertyInfo.PropertyType.) * { * object tempEntities = propertyInfo.GetValue(queryResponse, null); * if (tempEntities != null) * { * object[] tempEntityArray = (object[])tempEntities; * * if (tempEntityArray.Length > 0) * { * foreach (object item in tempEntityArray) * { * entities.Add((T)item); * } * } * } * * break; * } * }*/ this.serviceContext.IppConfiguration.Logger.CustomLogger.Log(Diagnostics.TraceLevel.Info, "Finished Executing Method FindAll."); System.Collections.ObjectModel.ReadOnlyCollection <T> readOnlyCollection = new System.Collections.ObjectModel.ReadOnlyCollection <T>(entities); return(readOnlyCollection); }
public override void Invoke(IHandlerContext context) { try { QunarUploadPolicyRequest qunarRequest = CoreHelper.ChangeToChild <UpLoadPolicyRequest, QunarUploadPolicyRequest>(context.Request); PolicyRecord lastPolicyRec = new PolicyRecord() { LastPolicyId = 0, LastUpdateTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")) }; context.UploadResponse.PolicyRec[UploadType.Incremental] = lastPolicyRec;//保存上次更新记录 #region 判断是否分批并交由下个中间件处理 int upLoadCount = System.Configuration.ConfigurationManager.AppSettings["MaxUploadCount"] == null ? 1000 : int.Parse(System.Configuration.ConfigurationManager.AppSettings["MaxUploadCount"].ToString()); if (qunarRequest.PolicyDataOrgin.Count < upLoadCount)//小于10000,自动上传 { OnMiddlewareWorking(new EventMsg { Status = RunStatus.Normal, Msg = "当前政策为" + qunarRequest.PolicyDataOrgin.Count + "条,小于最高限制条数:" + upLoadCount + "条,不用分批上传" }); List <Policies> lstAddPolicies = qunarRequest.PolicyDataOrgin.Where(x => x.DelDegree == 1).ToList(); List <Policies> lstDelPolicies = qunarRequest.PolicyDataOrgin.Where(x => x.DelDegree == 0).ToList(); qunarRequest.PolicyData.Add(UploadTypeDetail.IncrementalAdd, lstAddPolicies); qunarRequest.PolicyData.Add(UploadTypeDetail.IncrementalDelete, lstDelPolicies); context.SetRequest(qunarRequest); Next.Invoke(context); } else { OnMiddlewareWorking(new EventMsg { Status = RunStatus.Normal, Msg = "当前政策为" + qunarRequest.PolicyDataOrgin.Count + "条,大于最高限制条数:" + upLoadCount + "条,开始分批上传.." }); int index = 1; while (qunarRequest.PolicyDataOrgin.Count > 0) { List <Policies> lstPolicies = new List <Policies>(); lstPolicies = qunarRequest.PolicyDataOrgin.Take(upLoadCount).ToList();//取一万条先上传 qunarRequest.UploadCount = lstPolicies.Count; if (lstPolicies.Count > 0) { qunarRequest.PolicyDataOrgin.RemoveRange(0, lstPolicies.Count); } OnMiddlewareWorking(new EventMsg { Status = RunStatus.Normal, Msg = "收到政策数量:" + lstPolicies.Count + "条,开始第" + index + "次分批上传" }); List <Policies> lstAddPolicies = lstPolicies.Where(x => x.DelDegree == 1).ToList(); List <Policies> lstDelPolicies = lstPolicies.Where(x => x.DelDegree == 0).ToList(); PolicyRecord rec = new PolicyRecord() { LastPolicyId = lstPolicies.LastOrDefault().Id, LastUpdateTime = lstPolicies.LastOrDefault().UpdateTime }; context.UploadResponse.BeforePolicyRecord = rec; //每次都保留上回更新的记录 qunarRequest.PolicyData.Remove(UploadTypeDetail.IncrementalAdd); //先移除后添加,防止key冲突 qunarRequest.PolicyData.Remove(UploadTypeDetail.IncrementalDelete); qunarRequest.PolicyData.Add(UploadTypeDetail.IncrementalAdd, lstAddPolicies); qunarRequest.PolicyData.Add(UploadTypeDetail.IncrementalDelete, lstDelPolicies); context.SetRequest(qunarRequest); if (index <= 1) { Next.Invoke(context); } else { //先判断是否上传成功 OnMiddlewareWorking(new EventMsg { Status = RunStatus.Normal, Msg = "查询是否上传成功..." }); bool flag = SearchNotifyStatus(context.UploadResponse.UploadStatusId); if (flag) { OnMiddlewareWorking(new EventMsg { Status = RunStatus.Normal, Msg = "上传成功,自动进入下次上传..." }); Next.Invoke(context); } else { while (!flag) { Thread.Sleep(2000);//休息俩秒继续查询 OnMiddlewareWorking(new EventMsg { Status = RunStatus.Normal, Msg = "上传中,继续查询是否上传成功..." }); flag = SearchNotifyStatus(context.UploadResponse.UploadStatusId); if (flag) { flag = false; OnMiddlewareWorking(new EventMsg { Status = RunStatus.Normal, Msg = "上传成功,自动进入下次上传..." }); } } Next.Invoke(context); } } index++; } } #endregion } catch (Exception ex) { OnMiddlewareWorking(new EventMsg() { Status = Enums.RunStatus.Exception, Msg = "QunarIncrementalDispatcherMiddleware:" + ex.Message, Exception = ex, PurchaserType = Enums.PurchaserType.Qunar }); context.UploadResponse = new UploadPolicyResponse() { ErrCode = ResultType.Failed, ErrMsg = "QunarIncrementalDispatcherMiddleware:" + ex.Message, Excption = ex }; return; } }
/// <summary> /// Force to synchronize that data with the cloud. /// </summary> /// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns> internal async Task SynchronizeAsync() { if (IsSynchronizing) { return; } Logger.Instance.Information("Synchronization with the cloud started."); IsSynchronizing = true; if (CurrentCloudStorageProvider == null) { Logger.Instance.Warning("The user is not logged to any cloud storage provider. The synchronization stopped."); IsSynchronizing = false; return; } if (!CoreHelper.IsUnitTesting() && !SystemInfoHelper.CheckForInternetConnection()) { Logger.Instance.Warning("There is no internet connection. The synchronization stopped."); IsSynchronizing = false; return; } SynchronizationStarted?.Invoke(this, new EventArgs()); try { if (!await CurrentCloudStorageProvider.TryAuthenticateAsync()) { Logger.Instance.Warning("The user is not authenticated correctly. Consider unlink the app and connect again. The synchronization stopped."); IsSynchronizing = false; SynchronizationEnded?.Invoke(this, new EventArgs()); return; } var userId = SecurityHelper.ToSecureString(await CurrentCloudStorageProvider.GetUserIdAsync()); if (string.IsNullOrWhiteSpace(SecurityHelper.ToUnsecureString(userId))) { Logger.Instance.Warning("The user's id from the cloud storage provider has not been found. The synchronization stopped."); IsSynchronizing = false; SynchronizationEnded?.Invoke(this, new EventArgs()); SynchronizationFailed?.Invoke(this, new EventArgs()); return; } Logger.Instance.Information("Freezing the data before synchronize."); var dataService = ServiceLocator.GetService <DataService>(); var cloudDataEntryFromServer = new List <CloudDataEntry>(); var cloudAppFolder = await CurrentCloudStorageProvider.GetAppFolderAsync(); var cloudDataEntryFilePath = Path.Combine(cloudAppFolder.FullPath, Consts.DataEntryFileName); var cloudDataPassword = SecurityHelper.ToSecureString(SecurityHelper.EncryptString(userId, SecurityHelper.ToSecureString(await CurrentCloudStorageProvider.GetUserNameAsync()))); var localFrozenDataEntries = DataHelper.FromByteArray <AsyncObservableCollection <DataEntry> >(DataHelper.ToByteArray(dataService.DataEntries)); var localFrozenCache = DataHelper.FromByteArray <List <DataEntryCache> >(DataHelper.ToByteArray(dataService.Cache)); // Download data from server. if (cloudAppFolder.Files.Any(file => file.FullPath == cloudDataEntryFilePath)) { Logger.Instance.Information("Downloading the data entry file from the server."); try { using (var memoryStream = new MemoryStream()) { await CurrentCloudStorageProvider.DownloadFileAsync(cloudDataEntryFilePath, memoryStream); memoryStream.Position = 0; using (var aesStream = new AesStream(memoryStream, cloudDataPassword, SecurityHelper.GetSaltKeys(cloudDataPassword).GetBytes(16))) { var data = new byte[aesStream.Length]; aesStream.Read(data, 0, data.Length); cloudDataEntryFromServer = JsonConvert.DeserializeObject <List <CloudDataEntry> >(Encoding.UTF8.GetString(data)); } } } catch (Exception exception) { Logger.Instance.Warning($"Unable to download or read the data file entry from the cloud for the following reason : {exception.Message}"); IsSynchronizing = false; SynchronizationEnded?.Invoke(this, new EventArgs()); SynchronizationFailed?.Invoke(this, new EventArgs()); return; } } else { Logger.Instance.Information("There is no data entry file on the server yet."); } // Synchronize locally the data. The result must corresponds to what we will have locally and on the server at the end of the synchronization process. var cloudDataEntryToServer = dataService.DifferenceLocalAndCloudDataEntries(cloudDataEntryFromServer); // Download the needed data from the server to the local machine. Logger.Instance.Information("Downloading the needed data from the server to the local machine."); var dataToDownload = cloudDataEntryFromServer.Cast <DataEntryBase>().Except(localFrozenDataEntries, (item1, item2) => item1.Identifier == item2.Identifier).ToList(); var taskList = new List <Task>(); foreach (var cloudDataEntry in dataToDownload) { if (dataToDownload.Any(data => localFrozenCache.Any(item => data.Identifier == item.Identifier && item.Status == DataEntryStatus.Deleted))) { continue; } foreach (var dataEntryDataIdentifier in cloudDataEntry.DataIdentifiers) { var task = DownloadDataFileAsync(dataService.ClipboardDataPath, cloudAppFolder, cloudDataPassword, dataEntryDataIdentifier); taskList.Add(task); } } await Task.WhenAll(taskList); // Delete the needed data from the server Logger.Instance.Information("Deleting the needed data from the server."); taskList = new List <Task>(); foreach (var dataServiceDataEntry in localFrozenDataEntries.Where(item => !item.CanSynchronize)) { foreach (var dataEntryDataIdentifier in dataServiceDataEntry.DataIdentifiers) { var task = DeleteFileAsync(cloudAppFolder, dataEntryDataIdentifier); taskList.Add(task); } } await Task.WhenAll(taskList); taskList = new List <Task>(); foreach (var cacheEntry in localFrozenCache.Where(item => item.Status == DataEntryStatus.Deleted)) { var dataEntry = cloudDataEntryFromServer.SingleOrDefault(item => item.Identifier == cacheEntry.Identifier); if (dataEntry != null) { foreach (var dataEntryDataIdentifier in dataEntry.DataIdentifiers) { var task = DeleteFileAsync(cloudAppFolder, dataEntryDataIdentifier); taskList.Add(task); } } } await Task.WhenAll(taskList); await dataService.MakeCacheSynchronized(cloudDataEntryToServer, true, localFrozenCache); localFrozenDataEntries = DataHelper.FromByteArray <AsyncObservableCollection <DataEntry> >(DataHelper.ToByteArray(dataService.DataEntries)); localFrozenCache = DataHelper.FromByteArray <List <DataEntryCache> >(DataHelper.ToByteArray(dataService.Cache)); // Upload the needed data from the server to the local machine Logger.Instance.Information("Uploading the needed data from the server to the local machine."); var dataToUpload = localFrozenDataEntries.Cast <DataEntryBase>().Except(cloudDataEntryFromServer, (item1, item2) => item1.Identifier == item2.Identifier); taskList = new List <Task>(); foreach (var dataEntry in dataToUpload) { var localDataEntry = localFrozenDataEntries.Single(item => item.Identifier == dataEntry.Identifier); if (!localDataEntry.CanSynchronize || localDataEntry.Thumbnail.Type == ThumbnailDataType.Files) { continue; } foreach (var dataEntryDataIdentifier in dataEntry.DataIdentifiers) { var task = UploadDataFileAsync(dataService.ClipboardDataPath, cloudAppFolder, cloudDataPassword, dataEntryDataIdentifier); taskList.Add(task); } } await Task.WhenAll(taskList); // Upload the new data to the server. Logger.Instance.Information("Uploading the data entry file to the server."); using (var memoryStream = new MemoryStream()) using (var aesStream = new AesStream(memoryStream, cloudDataPassword, SecurityHelper.GetSaltKeys(cloudDataPassword).GetBytes(16))) { var data = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(cloudDataEntryToServer)); aesStream.Write(data, 0, data.Length); aesStream.Position = 0; await CurrentCloudStorageProvider.UploadFileAsync(memoryStream, cloudDataEntryFilePath); } await dataService.MakeCacheSynchronized(cloudDataEntryToServer, false, localFrozenCache); } catch (Exception exception) { Logger.Instance.Warning($"Unable to synchronize for the following reason : {exception.Message}. {exception.InnerException?.Message}"); SynchronizationFailed?.Invoke(this, new EventArgs()); } _synchronizeTimer.Stop(); _synchronizeTimer.Start(); IsSynchronizing = false; SynchronizationEnded?.Invoke(this, new EventArgs()); }
private async Task SynchronizeAsync(CancellationToken cancellationToken) { // The semaphore acts like queue. using (await _sempahore.WaitAsync(cancellationToken).ConfigureAwait(false)) { var synchronizationStarted = false; var succeeded = false; var requiresReloadLocalData = false; try { if (!_settingsProvider.GetSetting(SettingsDefinitions.SyncDataWithCloud)) { return; } string targetterProviderName = _settingsProvider.GetSetting(SettingsDefinitions.RemoteStorageProviderName); IRemoteStorageProvider remoteStorageProvider = _remoteStorageProviders.SingleOrDefault(m => string.Equals(m.Metadata.ProviderName, targetterProviderName, StringComparison.Ordinal))?.Value; if (remoteStorageProvider == null) { return; } if (!CoreHelper.IsInternetAccess()) { return; } SynchronizationStarted?.Invoke(this, EventArgs.Empty); synchronizationStarted = true; if (!await remoteStorageProvider.SignInAsync(interactive: false, cancellationToken).ConfigureAwait(false)) { // If fails to authenticate, disables synchronization and sign out. _settingsProvider.SetSetting(SettingsDefinitions.SyncDataWithCloud, false); await remoteStorageProvider.SignOutAsync().ConfigureAwait(false); // TODO: Add a log to notify to let the user know it signed out and he should re-authenticate. // returning here will still trigger the Finally block. return; } // Retrieve the list of online files. IReadOnlyList <RemoteFileInfo> roamingFiles = await remoteStorageProvider.GetFilesAsync(Constants.DataFileCountLimit, cancellationToken).ConfigureAwait(false); RemoteFileInfo roamingUserDataBundleFile = roamingFiles.FirstOrDefault(file => string.Equals(Path.GetFileName(file.FullPath), Constants.UserDataBundleFileName, StringComparison.Ordinal)); IEnumerable <RemoteFileInfo> allOtherRoamingFiles = roamingFiles.Where(file => !string.Equals(Path.GetFileName(file.FullPath), Constants.UserDataBundleFileName, StringComparison.Ordinal)); // Retrieve the list of local files. var localUserDataFolder = await CoreHelper.GetOrCreateUserDataStorageFolderAsync().ConfigureAwait(false); StorageFile localUserDataBundleFile = await localUserDataFolder.TryGetItemAsync(Constants.UserDataBundleFileName) as StorageFile; IEnumerable <StorageFile> allOtherLocalFiles = (await localUserDataFolder.GetFilesAsync()) .Where(file => !string.Equals(file.Name, Constants.UserDataBundleFileName, StringComparison.Ordinal)); if (localUserDataBundleFile == null && roamingUserDataBundleFile == RemoteFileInfo.Empty) { // Nothing locally and remotely? succeeded = true; return; } if (localUserDataBundleFile == null || (roamingUserDataBundleFile != RemoteFileInfo.Empty && roamingUserDataBundleFile.CreatedDateTime.ToUniversalTime() > (await localUserDataBundleFile.GetBasicPropertiesAsync()).DateModified.ToUniversalTime())) { // If there is no local user data file, or that the file on the server is more recent than the local one, // then we want to merge by taking the version from the server. await DownloadRoamingDataFromServerAsync( remoteStorageProvider, allOtherRoamingFiles, allOtherLocalFiles, cancellationToken).ConfigureAwait(false); // The local file changed, since we downloaded the one from the server, so let's indicate // that we want to reload (and merge) the local data. requiresReloadLocalData = true; } else { // Else, then it means the local file is more recent than the one on the server, // or that there is simply no file on the server, // so we want to merge by taking the version from the local file. await UploadLocalDataToServerAsync( remoteStorageProvider, localUserDataBundleFile, allOtherRoamingFiles, allOtherLocalFiles, cancellationToken).ConfigureAwait(false); } succeeded = true; } catch (OperationCanceledException) { _logger.LogEvent(SynchronizeCanceledEvent, "The synchronization with the cloud has been canceled."); } catch (Exception ex) { _logger.LogFault(SynchronizeFaultEvent, "Failed to synchronize the data with the cloud.", ex); } finally { if (synchronizationStarted) { RaiseSynchronizationCompleted(succeeded, requiresReloadLocalData); } } } }
private void TimerOnTick(object sender, EventArgs eventArgs) { CoreHelper.MinimizeFootprint(); }
public override void Invoke(IHandlerContext context) { try { QunarUploadPolicyRequest qunarIncrementRequest = CoreHelper.ChangeToChild <UpLoadPolicyRequest, QunarUploadPolicyRequest>(context.Request); //获取所有在去哪儿上传过的政策 string responseContent = CoreHelper.DoPost(System.Configuration.ConfigurationManager.AppSettings["SearchCompleteUploadPolicyUrl"].ToString(), null); if (string.IsNullOrEmpty(responseContent)) { OnMiddlewareWorking(new EventMsg() { PurchaserType = Enums.PurchaserType.Qunar, Status = Enums.RunStatus.Normal, Msg = "暂未上传过任何政策,不用更新!" }); context.UploadResponse = new UploadPolicyResponse() { ErrCode = Enums.ResultType.Sucess }; return; } CompleteUploadPolicyResponse rep = JsonConvert.DeserializeObject <CompleteUploadPolicyResponse>(responseContent); if (rep.ErrCode == Enums.ResultType.Failed || rep.CompleteUploadPolicyCollection == null || rep.CompleteUploadPolicyCollection.Count <= 0) { OnMiddlewareWorking(new EventMsg() { Status = Enums.RunStatus.Normal, Msg = "暂未上传过任何政策,不用更新!" }); context.UploadResponse = new UploadPolicyResponse() { ErrCode = Enums.ResultType.Sucess }; return; } Dictionary <QunarPolicyType, List <Policies> > dic = CoreHelper.ReserveHaveUploadPolicy(qunarIncrementRequest.PolicyDataOrgin, rep.CompleteUploadPolicyCollection); if (dic.Count <= 0) { OnMiddlewareWorking(new EventMsg() { Status = Enums.RunStatus.Normal, Msg = "此次更新包不在上传政策列表中,不用更新!" }); context.UploadResponse = new UploadPolicyResponse() { ErrCode = Enums.ResultType.Sucess }; return; } foreach (KeyValuePair <QunarPolicyType, List <Policies> > item in dic)//分批上传不同类型的政策 { qunarIncrementRequest.PolicyType = item.Key; qunarIncrementRequest.PolicyDataOrgin = item.Value; context.SetRequest(qunarIncrementRequest); Next.Invoke(context); } } catch (Exception ex) { OnMiddlewareWorking(new EventMsg() { Status = Enums.RunStatus.Exception, Msg = "QunarFilterRepeatUploadMiddleware:" + ex.Message, Exception = ex, PurchaserType = Enums.PurchaserType.Qunar }); context.UploadResponse = new UploadPolicyResponse() { ErrCode = Enums.ResultType.Failed, ErrMsg = ex.Message, Excption = ex }; return; } }
public object CreateTourInfo([FromBody] object requestBody) { var responseModel = new ResponseModel(); try { do { var identity = HttpContext.User.Identity as ClaimsIdentity; if (identity == null) { break; } var userId = CoreHelper.GetUserId(HttpContext, ref responseModel); var body = requestBody != null ? JObject.Parse(requestBody.ToString() ?? "{}") : null; if (!CoreHelper.GetParameter(out var jsonDestinationPlaceId, body, "DestinatePlaceId", JTokenType.Integer, ref responseModel) || !CoreHelper.GetParameter(out var jsonStartPlaceId, body, "StartPlaceId", JTokenType.Integer, ref responseModel) || !CoreHelper.GetParameter(out var jsonImages, body, "Images", JTokenType.Array, ref responseModel, true) || !CoreHelper.GetParameter(out var jsonName, body, "Name", JTokenType.String, ref responseModel)) { break; } var isDestinationParsed = int.TryParse(jsonDestinationPlaceId?.ToString(), out var destinationPlaceId); var isStartPlaced = int.TryParse(jsonStartPlaceId?.ToString(), out var startPlaceId); if (!isDestinationParsed || !isStartPlaced) { responseModel.FromErrorCode(ErrorCode.Fail); break; } var name = jsonName?.ToString(); var images = jsonImages != null ? JsonConvert.DeserializeObject <string[]>(jsonImages.ToString()) : null; var tourInfo = new TourInfo( createById: userId, name: name !, images: images !, startPlaceId: startPlaceId, destinatePlaceId: destinationPlaceId ); if (!_tourInfoService.TryAddTourInfo(tourInfo)) { responseModel.FromErrorCode(ErrorCode.Fail); break; } responseModel.FromErrorCode(ErrorCode.Success); responseModel.Data = new JArray { AddTourFullInfo(tourInfo, userId) }; } while (false); } catch (Exception ex) { responseModel.FromException(ex); } return(responseModel.ToJson()); }
public void GetApplicationName() { var hash = CoreHelper.GetApplicationName(); Assert.AreEqual(hash, "UnitTestApp"); }
public object AddNewTour(int id, [FromBody] object requestBody) { var responseModel = new ResponseModel(); try { do { var body = requestBody != null ? JObject.Parse(requestBody.ToString() ?? "{}") : null; if (!CoreHelper.GetParameter(out var jsonStartDate, body, "StartDay", JTokenType.Date, ref responseModel) || !CoreHelper.GetParameter(out var jsonEndDate, body, "EndDay", JTokenType.Date, ref responseModel) || !CoreHelper.GetParameter(out var jsonTotalDay, body, "TotalDay", JTokenType.Integer, ref responseModel) || !CoreHelper.GetParameter(out var jsonTotalNight, body, "TotalNight", JTokenType.Integer, ref responseModel) || !CoreHelper.GetParameter(out var jsonMaxMember, body, "MaxMember", JTokenType.Integer, ref responseModel) || !CoreHelper.GetParameter(out var jsonTimelines, body, "Timelines", JTokenType.Array, ref responseModel) || !CoreHelper.GetParameter(out var jsonName, body, "Name", JTokenType.String, ref responseModel) || !CoreHelper.GetParameter(out var jsonPrice, body, "Price", JTokenType.Float, ref responseModel) || !CoreHelper.GetParameter(out var jsonServices, body, "Services", JTokenType.Array, ref responseModel, isNullable: true)) { break; } if (_tourInfoService.TryGetTourInfoById(id, out var tourInfo) != ErrorCode.Success || tourInfo == null) { throw new ExceptionWithMessage("Tour info not found."); } // var timelines = jsonTimelines.ToObject<List<TimeLine>>(); var timelines = JsonConvert.DeserializeObject <List <TimeLine> >(jsonTimelines.ToString()); var name = jsonName?.ToString(); _ = DateTime.TryParse(jsonStartDate?.ToString(), out var startDate); _ = DateTime.TryParse(jsonEndDate?.ToString(), out var endDate); _ = int.TryParse(jsonMaxMember?.ToString(), out var maxMember); _ = int.TryParse(jsonTotalDay?.ToString(), out var totalDay); _ = int.TryParse(jsonTotalNight?.ToString(), out var totalNight); _ = float.TryParse(jsonPrice?.ToString(), out var price); var serviceIds = jsonServices != null ? JsonConvert.DeserializeObject <string[]>(jsonServices.ToString()) : null; // Get user id var userId = CoreHelper.GetUserId(HttpContext, ref responseModel); // Check user is exist if (!_userService.TryGetUsers(userId, out var _)) { responseModel.FromErrorCode(ErrorCode.UserNotFound); break; } var tour = new Tour( tourInfo: tourInfo, timelines: timelines, name: name, startDay: startDate, endDay: endDate, totalDay: totalDay, totalNight: totalNight, createById: userId, maxMember: maxMember, tourInfoId: id, services: serviceIds ?? new string[0], price: price ); // Add tour to tour info if (!_tourService.TryAddTour(tour, timelines)) { responseModel.FromErrorCode(ErrorCode.Fail); break; } var post = new Post( content: string.Empty, images: new string[0], authorId: userId, createAt: DateTime.Now, tourId: tour.Id, rating: null ); //Add post for tour if (!_postService.AddNewPost(post)) { responseModel.FromErrorCode(ErrorCode.Fail); break; } responseModel.FromErrorCode(ErrorCode.Success); responseModel.Data = new JArray { JObject.FromObject(tour) }; } while (false); } catch (Exception ex) { responseModel.FromException(ex); } return(responseModel.ToJson()); }
/// <summary> /// Запускает процесс работы с LongPoll-сервером ВКонтакте. /// </summary> public async void StartLongPolling(bool trace = false) { if (IsWorking) { return; } IsWorking = true; #if DEBUG Debug.WriteLine("LongPoll service started."); #endif _timer.Tick += Timer_Tick; _timer.Start(); CheckCounters(); _cts = new CancellationTokenSource(); try { if (_serverData == null) { try { if (!await GetServerData(trace)) { return; } } catch (Exception) { } } if (trace) { CoreHelper.SendInAppPush( "Сервис мгновенных сообщений готов", "Сервис успешно запущен", PopupMessageType.Info); } while (IsWorking) { #if DEBUG Debug.WriteLine("LongPoll request sent. Waiting for data..."); #endif var response = await VKHelper.GetLongPollResponse(_serverData.Server, _serverData.Key, _serverData.Ts, 2, _cts.Token); if (response.Error == VKLongPollErrors.ConnectionError) { if (_numberOfRetries == 5) { #if DEBUG Debug.WriteLine("LongPoll connection failed. Stopping the service..."); #endif Stop(LongPollStopReason.ConnectionError); return; } _numberOfRetries++; #if DEBUG Debug.WriteLine(String.Format("LongPoll connecton error. Attempt number: {0}. Attempt after {1} seconds.", _numberOfRetries, 5 * _numberOfRetries)); #endif CoreHelper.SendInAppPush( "Повтор через " + 5 * _numberOfRetries + " секунд", "Ошибка соединения", PopupMessageType.Warning); await Task.Delay(TimeSpan.FromSeconds(5 * _numberOfRetries), _cts.Token); continue; } else if (response.Error == VKLongPollErrors.DataIsOutdated) { _serverData.Ts = response.NewTs; await Task.Delay(500); continue; } else if (response.Error == VKLongPollErrors.DataIsCorrupted || response.Error == VKLongPollErrors.KeyIsExpired) { if (!await GetServerData()) { return; } } #if DEBUG Debug.WriteLine("LongPoll data received."); #endif _numberOfRetries = 0; _serverData.Ts = response.NewTs; var messages = new List <MessageInfo>(); for (int i = 0; i < response.Updates.Count; i++) { switch (response.Updates[i].Type) { case VKLongPollUpdateType.MessageDeleted: break; case VKLongPollUpdateType.MessageFlagsReplaced: break; case VKLongPollUpdateType.MessageFlagsSetted: break; case VKLongPollUpdateType.MessageFlagsResetted: break; case VKLongPollUpdateType.NewMessage: messages.Add((MessageInfo)response.Updates[i].GetInfo()); break; case VKLongPollUpdateType.ReceivedMessagesReaded: break; case VKLongPollUpdateType.SentMessagesReaded: break; case VKLongPollUpdateType.UserOnline: break; case VKLongPollUpdateType.UserOffline: break; case VKLongPollUpdateType.ChatParametersChanged: break; case VKLongPollUpdateType.UserIsTypingInDialog: UserIsTyping(this, new UserIsTypingEventArgs((UserIsTypingInfo)response.Updates[i].GetInfo())); break; case VKLongPollUpdateType.UserIsTypingInChat: UserIsTyping(this, new UserIsTypingEventArgs((UserIsTypingInfo)response.Updates[i].GetInfo())); break; case VKLongPollUpdateType.UserMakesACall: break; case VKLongPollUpdateType.MessageCounterChanged: MessagesCounterChanged(this, new MessagesCounterChangedEventArgs( ((MessagesCounterInfo)response.Updates[i].GetInfo()).Count)); break; } } OnMessagesReceived(messages); await Task.Delay(500); } } catch (OperationCanceledException) { } }
public async Task MergingAfterSynchronization() { Guid categoryFoo; Guid categoryBar; Guid categoryBoo; using (DataManager dataManager = await CreateDataManagerAsync().ConfigureAwait(false)) { await dataManager.LoadOrCreateLocalUserDataBundleAsync(CancellationToken.None).ConfigureAwait(false); categoryFoo = (await dataManager.AddNewCategoryAsync("foo", CancellationToken.None).ConfigureAwait(false)).Id; categoryBar = (await dataManager.AddNewCategoryAsync("bar", CancellationToken.None).ConfigureAwait(false)).Id; categoryBoo = (await dataManager.AddNewCategoryAsync("boo", CancellationToken.None).ConfigureAwait(false)).Id; await dataManager.SaveLocalUserDataBundleAsync(true, CancellationToken.None).ConfigureAwait(false); // backup data file var localUserDataFolder = await CoreHelper.GetOrCreateUserDataStorageFolderAsync().ConfigureAwait(false); var dataFile = await localUserDataFolder.GetFileAsync(Constants.UserDataBundleFileName); await dataFile.CopyAsync(localUserDataFolder, "backup"); await dataManager.DeleteCategoryAsync(categoryFoo, CancellationToken.None).ConfigureAwait(false); await dataManager.DeleteCategoryAsync(categoryBar, CancellationToken.None).ConfigureAwait(false); await dataManager.RenameCategoryAsync(categoryBoo, "HelloThere", CancellationToken.None).ConfigureAwait(false); // local change is more recent, so "hellothere" should persist after merge. await dataManager.SaveLocalUserDataBundleAsync(true, CancellationToken.None).ConfigureAwait(false); Assert.AreEqual(6, dataManager.Categories.Count); } using (DataManager dataManager = await CreateDataManagerAsync(clearExistingLocalData: false).ConfigureAwait(false)) { await dataManager.LoadOrCreateLocalUserDataBundleAsync(CancellationToken.None).ConfigureAwait(false); Assert.AreEqual(6, dataManager.Categories.Count); // restore data file var localUserDataFolder = await CoreHelper.GetOrCreateUserDataStorageFolderAsync().ConfigureAwait(false); var dataFile = await localUserDataFolder.GetFileAsync("backup"); await dataFile.RenameAsync(Constants.UserDataBundleFileName, Windows.Storage.NameCollisionOption.ReplaceExisting); // Load and do the merge. await dataManager.LoadOrCreateLocalUserDataBundleAsync(CancellationToken.None).ConfigureAwait(false); Assert.AreEqual(8, dataManager.Categories.Count); // Check they're well sorted. Assert.AreEqual(LanguageManager.Instance.Core.CategoryAll, dataManager.Categories[0].Name); // Category "All" is always the first. Assert.AreEqual("bar", dataManager.Categories[1].Name); Assert.AreEqual(LanguageManager.Instance.Core.CategoryFinancial, dataManager.Categories[2].Name); Assert.AreEqual("foo", dataManager.Categories[3].Name); Assert.AreEqual("HelloThere", dataManager.Categories[4].Name); Assert.AreEqual(LanguageManager.Instance.Core.CategoryPersonal, dataManager.Categories[5].Name); Assert.AreEqual(LanguageManager.Instance.Core.CategoryProfessional, dataManager.Categories[6].Name); Assert.AreEqual(LanguageManager.Instance.Core.CategorySocial, dataManager.Categories[7].Name); } }
private static void TimerKeepAwakeTick(object sender, EventArgs eventArgs) { CoreHelper.KeepDeviceAwake(); DebugHelper.WriteLogEntry("TimerKeepAwakeTick"); }
/// <summary> /// Load the value of <see cref="StartWithWindows"/>. This method must be called once the window is loaded and visible. /// </summary> internal async Task LoadStartWithWindows() { _startWithWindows = await CoreHelper.IsAppStartsAtLogin(); RaisePropertyChanged(nameof(StartWithWindows)); }
public override void Invoke(IHandlerContext context) { try { QunarUploadPolicyRequest qunarRequest = CoreHelper.ChangeToChild <UpLoadPolicyRequest, QunarUploadPolicyRequest>(context.Request); OnMiddlewareWorking(new EventMsg { Status = RunStatus.Normal, Msg = "开始获取去哪儿全量更新包..." }); //PolicySyncRecLib syncLib = new PolicySyncRecLib(); //PolicyRecord policyRec = CoreHelper.GetLastUpTimeAndId("Qunar\\QunarFullPolicyRecLog");//去哪儿全量选择日志 #region 查询政策 SearchPolicyRequest request = new SearchPolicyRequest() { CommisionMoney = qunarRequest.CommisionMoney, CommsionPoint = qunarRequest.CommsionPoint, IsUpload = true, OperName = qunarRequest.OperName, PageSize = qunarRequest.PageSize, PolicyType = qunarRequest.PolicyType, pType = PurchaserType.Qunar, SqlWhere = qunarRequest.SqlWhere, UType = qunarRequest.UploadType, IsSearchTotalCount = false }; string searchContent = CoreHelper.DoPost(System.Configuration.ConfigurationManager.AppSettings["SearchPolicyUrl"].ToString(), request); SearchPolicyResponse rep = JsonConvert.DeserializeObject <SearchPolicyResponse>(searchContent);//先查询一遍,获取要上传的政策 PolicyRecord policyRec = rep.LastPolicyRecord; context.UploadResponse.BeforePolicyRecord = policyRec; OnMiddlewareWorking(new EventMsg { Status = RunStatus.Normal, Msg = "载入上次更新记录,更新时间:" + policyRec.LastUpdateTime.ToString("yyyy-MM-dd HH:mm:ss.fff") + ",上次最后一条更新id:" + policyRec.LastPolicyId.ToString() + ",收到全量政策包:" + rep.lstPolicies.Count + "条" }); qunarRequest.PolicyDataOrgin = rep.lstPolicies; context.SetRequest(qunarRequest); Next.Invoke(context); #endregion #region 注释 //bool isHaveAll = false; ////过滤政策 //#region 过滤政策 //int count = rep.lstPolicies == null ? 0 : rep.lstPolicies.Count; //OnMiddlewareWorking(new EventMsg { Status = RunStatus.Normal, Msg = "查询到政策数量:" + count + " 条,开始过滤..." }); //List<Policies> lstFiltedPolicy = CoreHelper.FilterPolicy(qunarRequest.LstQunarCodes, rep.lstPolicies, ref isHaveAll); //if (lstFiltedPolicy.Count <= 0) //{ // OnMiddlewareWorking(new EventMsg { Status = RunStatus.Normal, Msg = "经过去哪儿三子码过滤后未筛选到要上传的政策" }); // return; //} ////if (isHaveAll) ////{ //// return; ////DialogResult dr = MessageBox.Show("当前上传的政策有全国对全国的政策,是否继续上传", "提示", MessageBoxButtons.OKCancel); ////if (dr == DialogResult.Cancel) ////{ //// return; ////} ////} //#endregion //List<Policies> lstAddPolicies = CoreHelper.SplitPolicy(request.pType, lstFiltedPolicy, qunarRequest.LstQunarCodes);//拆分政策 //qunarRequest.UploadCount = lstAddPolicies.Count; //context.UploadResponse.BeforePolicyRecord = policyRec; //// List<Policies> lstAddPolicies = syncLib.LoadPolicy(context.Request.PageSize, policyRec, context.Request.SqlWhere, PurchaserType.Qunar, ref selectSql,ref totalCount, UploadType.FullUpload, context.Request.CommisionMoney, context.Request.CommsionPoint);//获取要上传的政策 //// List<Policies> lstAddPolicies = syncLib.LoadPolicy(policyRec, context.Request.CommisionMoney, context.Request.CommsionPoint, context.Request.PageSize, context.Request.SqlWhere, ref selectSql, ref totalCount, UploadType.FullUpload);//获取要上传的政策 ////if(!context.Request.IsPrintSql) ////{ //// selectSql = ""; ////} ////selectSql = context.Request.IsPrintSql ? "\r\n筛选sql为:\r\n" + selectSql+"\r\n" : ""; //if (lstAddPolicies.Count <= 0) //{ // OnMiddlewareWorking(new EventMsg { Status = RunStatus.Normal, Msg = "未筛选到要上传的政策,或者筛选的政策已经上传!" }); // context.UploadResponse = new UploadPolicyResponse() { ErrCode = ResultType.Failed, ErrMsg = "未筛选到要上传的政策,或者筛选的政策已经上传!" }; // return; //} #endregion } catch (Exception ex) { OnMiddlewareWorking(new EventMsg() { Status = ND.PolicyService.Enums.RunStatus.Exception, Msg = "QunarLoadFullPolicyMiddleware:" + ex.Message, Exception = ex, PurchaserType = ND.PolicyService.Enums.PurchaserType.Qunar }); context.UploadResponse = new UploadPolicyResponse() { ErrCode = ND.PolicyService.Enums.ResultType.Failed, ErrMsg = ex.Message, Excption = ex }; return; } }
/// <summary> /// Executes a report against a specified realm. The realm must be set in the context. /// </summary> /// <param name="reportName">Name of Report to Run.</param> /// <returns>Returns an updated version of the entity with updated identifier and sync token.</returns> public Report ExecuteReport(string reportName) { this.serviceContext.IppConfiguration.Logger.CustomLogger.Log(Diagnostics.TraceLevel.Info, "Called Method ExecuteReport."); // Validate parameter if (string.IsNullOrEmpty(reportName)) { IdsException exception = new IdsException(Resources.ParameterNotNullMessage, new ArgumentNullException(Resources.StringParameterNullOrEmpty)); this.serviceContext.IppConfiguration.Logger.CustomLogger.Log(Diagnostics.TraceLevel.Error, string.Format(CultureInfo.InvariantCulture, Resources.ExceptionGeneratedMessage, exception.ToString())); IdsExceptionManager.HandleException(exception); } string resourceString = reportName; //Build Query Parameters // Builds resource Uri string uri = ""; string reportsQueryParameters = GetReportQueryParameters(); if (reportsQueryParameters.Length > 0) { uri = string.Format(CultureInfo.InvariantCulture, "{0}/company/{1}/reports/{2}?{3}", Utility.CoreConstants.VERSION, this.serviceContext.RealmId, resourceString, reportsQueryParameters); } else { uri = string.Format(CultureInfo.InvariantCulture, "{0}/company/{1}/reports/{2}", Utility.CoreConstants.VERSION, this.serviceContext.RealmId, resourceString); } // Creates request parameters RequestParameters parameters; if (this.serviceContext.IppConfiguration.Message.Request.SerializationFormat == Intuit.Ipp.Core.Configuration.SerializationFormat.Json) { parameters = new RequestParameters(uri, HttpVerbType.GET, Utility.CoreConstants.CONTENTTYPE_APPLICATIONJSON); } else { parameters = new RequestParameters(uri, HttpVerbType.GET, Utility.CoreConstants.CONTENTTYPE_APPLICATIONXML); } // Prepares request HttpWebRequest request = this.restHandler.PrepareRequest(parameters, null); string response = string.Empty; try { // gets response response = this.restHandler.GetResponse(request); } catch (IdsException ex) { IdsExceptionManager.HandleException(ex); } CoreHelper.CheckNullResponseAndThrowException(response); // de serialize object IntuitResponse restResponse = (IntuitResponse)CoreHelper.GetSerializer(this.serviceContext, false).Deserialize <IntuitResponse>(response); this.serviceContext.IppConfiguration.Logger.CustomLogger.Log(Diagnostics.TraceLevel.Info, "Finished Executing Method ExecuteReport."); return((Report)(restResponse.AnyIntuitObject as Report)); }
public override RunTaskResult RunTask() { RunTaskResult taskResult = new RunTaskResult() { Success = true, Result = "执行完毕" }; List <Policies> lstPolicies = new List <Policies>(); string queueName = CustomConfig["policyListenQueueName"]; string queueHost = CustomConfig["policyListenQueueHost"]; string updateQueueName = CustomConfig["policyUpdateQueueName"]; string updateQueueHost = CustomConfig["policyUpdateQueueHost"]; while (true) { #region 监听队列 try { MessageQueue x = new MessageQueue(".\\" + queueHost + "\\" + queueName); System.Messaging.Message myMessage = x.Receive(MessageQueueTransactionType.Single); myMessage.Formatter = new BinaryMessageFormatter(); lstPolicies = myMessage.Body as List <Policies>; if (lstPolicies == null || lstPolicies.Count <= 0) { ShowRunningLog("未从队列中收到任何政策更新包!"); continue; } ShowRunningLog("收到监听队列中政策更新包:" + lstPolicies.Count + "条!"); } catch (Exception ex) { ShowRunningLog("监听队列异常:" + JsonConvert.SerializeObject(ex)); taskResult = new RunTaskResult() { Success = false, Result = ex.Message }; // return taskResult; continue; } #endregion try { string responseContent = CoreHelper.DoPost(System.Configuration.ConfigurationManager.AppSettings["SearchCompleteUploadPolicyUrl"].ToString(), null); if (string.IsNullOrEmpty(responseContent)) { ShowRunningLog("暂未上传过任何政策,不用更新!"); // return taskResult; continue; } CompleteUploadPolicyResponse rep = JsonConvert.DeserializeObject <CompleteUploadPolicyResponse>(responseContent); if (rep.ErrCode == ResultType.Failed || rep.CompleteUploadPolicyCollection == null || rep.CompleteUploadPolicyCollection.Count <= 0) { ShowRunningLog("暂未上传过任何政策,不用更新!"); //return taskResult; continue; } Dictionary <QunarPolicyType, List <Policies> > dic = CoreHelper.ReserveHaveUploadPolicy(lstPolicies, rep.CompleteUploadPolicyCollection); if (dic.Count <= 0) { ShowRunningLog("此次更新包不在上传政策列表中,不用更新!"); // return taskResult; continue; } //在的话发送到更新队列中 List <Policies> lstUpdatePolicies = new List <Policies>(); foreach (KeyValuePair <QunarPolicyType, List <Policies> > item in dic) { ShowRunningLog("收到去哪儿" + item.Key.ToString() + "政策更新包:" + item.Value.Count + "条"); item.Value.ForEach(x => { lstUpdatePolicies.Add(x); }); } new MessageQueueHelper().SendMsgToQueue(updateQueueName, lstUpdatePolicies, MessagePriority.Normal, updateQueueHost); ShowRunningLog("发送更新队列成功!"); continue; } catch (Exception ex) { ShowRunningLog(JsonConvert.SerializeObject(ex)); //return new RunTaskResult() { Success = false, Result = ex.Message }; continue; } } }
/// <summary> /// 返回一个值 /// </summary> /// <typeparam name="TResult"></typeparam> /// <returns></returns> public TResult ToScalar <TResult>() { object obj = this.ToScalar(); return(CoreHelper.ConvertValue <TResult>(obj)); }
public static void AssemblyInitialize(TestContext context) { RestTests <TestStartup> .LoadBalancerUrl = CoreHelper.GetConfiguration <WebConfiguration>().LoadBalancerUrl; }
/// <summary> /// 数据访问上下文 /// </summary> /// <param name="dbHelper"></param> /// <param name="dbLocation"></param> public DbContext(CoreHelper.DBHelper dbHelper, DBLocation dbLocation) { DBHelper = dbHelper; DBLocation = dbLocation; }
private void OpenUrl(string url) { CoreHelper.OpenBrowser(url); }
public Member_Action Create(CoreHelper.Enum.MemberActionType MemberActionType) { return Create(MemberActionType, string.Empty); }
private void ExecuteContextMenuClosedCommand() { CoreHelper.MinimizeFootprint(); }