private DbCommand PrepareDbCommand(ref int daysResend, GetLastResult _lastExportDate) { // 3. Get all records from a day before 'last export date' to now with SQL in pages of 20 records each if (_lastExportDate.Status == System.Net.HttpStatusCode.OK) { // searchFrom = searchFrom.AddDays(-1); var result = Math.Ceiling(DateTime.Now.Subtract(_lastExportDate.DateLastVenta).TotalDays); if (_config.DaysToResend < result) { daysResend = int.Parse(Math.Ceiling(result).ToString()); Debug.WriteLine($"Getting from {daysResend} days ago: {DateTime.Now.AddDays(daysResend * -1).ToString("yyyy-MM-dd")}."); } else { Debug.WriteLine($"Getting from {_config.DaysToResend} days ago: {DateTime.Now.AddDays(_config.DaysToResend * -1).ToString("yyyy-MM-dd")}."); } } else if (_lastExportDate.Status == System.Net.HttpStatusCode.NotFound) { // no hay registros, configurar para que envie todo (5 años) var dOld = DateTime.Now.AddYears(-5); var result = DateTime.Now.Subtract(dOld); Debug.WriteLine($"Getting all currrent records from {dOld.ToString("yyyy-MM-dd")}"); daysResend = int.Parse(Math.Ceiling(result.TotalDays).ToString()); } DALMethods dal = new DALMethods(_config); dal.ConnectionOpen(out DbConnection connection); var command = connection.CreateCommand(); command.CommandType = System.Data.CommandType.Text; command.CommandText = dal._parametrizedSelectVentas; SqlParameter days = new SqlParameter { ParameterName = "@daysToRepeat", Value = daysResend * -1 }; command.Parameters.Add(days); return(command); }
private void ConfigAndSetStartDateToRetrieve(ConnectionStringSettings configCS, int daysResend, out Stopwatch timerTokenRefresh, out APIMethods api, out GetLastResult _lastExportDate) { _config = new JobConfig { FarmaticConnectionString = configCS.ConnectionString, ProviderConnectionString = configCS.ProviderName, APIEndpoint = ConfigurationManager.AppSettings["APIEndpoint"], APIUser = ConfigurationManager.AppSettings["APIUser"], APIPwd = ConfigurationManager.AppSettings["APIPwd"], JWTAuthRoute = ConfigurationManager.AppSettings["APITokenEndpoint"], APIGetVentaData = ConfigurationManager.AppSettings["APIGetVentaData"], APIPostVentaData = ConfigurationManager.AppSettings["APIPostVentaData"], APIPostVentaDataRange = ConfigurationManager.AppSettings["APIPostVentaDataRange"], APICodUsuario = ConfigurationManager.AppSettings["APICodUsuario"], DaysToResend = daysResend, UseAPIRangeMethod = bool.Parse(ConfigurationManager.AppSettings["UseAPIRangeMethod"]) }; // try webApi retrieve lastrecord to limit request timerTokenRefresh = new Stopwatch(); timerTokenRefresh.Start(); api = new APIMethods(_config); api.SetToken(); if (api.TokenData == null) { throw new System.Exception($"Could not obtain token from WebAPI, endpoint root was {_config.APIEndpoint}"); } // 2. Get 'last export date' (if I can add column: ExportDate, if not fallback to use FechaVenta) data from webAPI _lastExportDate = api.GetLastExportInfo(); DateTime searchFrom = DateTime.Now; }