private void LogSQL(string sql)
        {
            //var filePath = @"C:\Temp\DB Tool\";
            //var fileName = DateTime.Now.Year + DateTime.Now.Month + DateTime.Now.Day + ".txt";
            //if (!Directory.Exists(filePath))
            //{
            //    Directory.CreateDirectory(filePath);
            //}

            //StreamWriter sw = null;
            //if (!File.Exists(filePath + fileName))
            //{
            //    sw = File.CreateText(filePath + fileName);
            //}
            //else
            //{
            //    sw = File.AppendText(filePath + fileName);
            //}

            //sw.WriteLine("--------Executed on: " + DateTime.Now.ToString("MM-dd-yyyy") + " " + DateTime.Now.Hour + ":" + DateTime.Now.Minute + ":" + DateTime.Now.Second + "--------");
            //sw.WriteLine(sql);
            //sw.WriteLine("");

            //sw.Close();

            var data = new QueryLog.Data();

            data.ConnectionId = ConnectionId;
            data.ViewId       = 0;
            data.QueryText    = sql;
            data.CreatedDate  = DateTime.Now;
            QueryLog.Create(data, ApplicationConnectionString);
        }
示例#2
0
        public void GetWeatherDataByCity()
        {
            Console.WriteLine("");
            Console.WriteLine("Please type City name..");
            Console.Write("City: ");
            var city = Console.ReadLine();

            while (string.IsNullOrWhiteSpace(city))
            {
                Console.WriteLine("City name empty!");
                Console.WriteLine("Please type City name..");
                Console.Write("City: ");
                city = Console.ReadLine();
            }

            using (var db = new WapContext())
            {
                db.Database.EnsureCreated();
                var ql = new QueryLog
                {
                    CityName  = city,
                    QueryDate = DateTime.Now
                };

                db.QueryLogs.Add(ql);
                db.SaveChanges();
            }

            ShowWeatherData(city);
        }
示例#3
0
        public ActionResult AddWhiteList(QueryLog Log)
        {
            Data.addWhitelistViaAutre(Log.Domain);

            ViewBag.QueryLogs = Data.querylogs.ToList();

            return(View("Index"));
        }
示例#4
0
        public IActionResult SearchByHSMVNumber()
        {
            QueryLog details            = CreateLog(Request.Path);
            var      hsmv_report_number = Request.Headers["hsmv"];

            details.parameters.Add(hsmv_report_number);

            var result = _repo.FindByHsmvReportNumber(int.Parse(hsmv_report_number));

            if (result.GetType() != typeof(CrashEvent))
            {
                details.succeeded    = true;
                details.return_count = 1;
            }
            // _log.Query(details);
            return(new OkObjectResult(result));
        }
示例#5
0
    protected void ReloadData()
    {
        if (!SqlHelperClass.DebugQueries)
        {
            this.lblInfo.Text = GetString("DebugSQL.NotConfigured");
        }
        else
        {
            this.plcLogs.Controls.Clear();

            for (int i = SqlHelperClass.LastLogs.Count - 1; i >= 0; i--)
            {
                try
                {
                    // Get the log
                    RequestLog log = (RequestLog)SqlHelperClass.LastLogs[i];
                    if (log != null)
                    {
                        // Load the table
                        DataTable dt = log.LogTable;
                        if (!DataHelper.DataSourceIsEmpty(dt))
                        {
                            // Load the control
                            QueryLog logCtrl = (QueryLog)LoadControl("~/CMSAdminControls/Debug/QueryLog.ascx");
                            logCtrl.ID = "logSQL" + i;
                            logCtrl.EnableViewState     = false;
                            logCtrl.Log                 = log;
                            logCtrl.LogStyle            = "";
                            logCtrl.ShowCompleteContext = this.chkCompleteContext.Checked;

                            // Add to the output
                            this.plcLogs.Controls.Add(new LiteralControl("<div>&lrm;<strong>&nbsp;" + GetRequestLink(log.RequestURL, log.RequestGUID) + "</strong> (" + log.RequestTime.ToString("hh:mm:ss") + ")&lrm;<br /><br />"));
                            this.plcLogs.Controls.Add(logCtrl);
                            this.plcLogs.Controls.Add(new LiteralControl("</div><br /><br />"));

                            logs.Add(logCtrl);
                        }
                    }
                }
                catch
                {
                }
            }
        }
    }
示例#6
0
        public IActionResult SearchByVIN()
        {
            QueryLog details = CreateLog(Request.Path);
            var      vin     = Request.Headers["vin"];

            details.parameters.Add(vin);
            if (ModelState.IsValid)
            {
                var result = _repo.FindByVIN(vin);
                if (result.Count() != 0)
                {
                    details.return_count = result.Count();
                    details.succeeded    = true;
                }
                // _log.Query(details);
                return(new OkObjectResult(result));
            }
            // _log.Query(details);
            return(new BadRequestObjectResult(ModelState));
        }
示例#7
0
        private void frmLog_Load(object sender, EventArgs e)
        {
            try
            {
                Setup();

                txtLog.ConfigurationManager.Language = "mssql";
                txtLog.ConfigurationManager.Configure();
                //txtLog.Text = string.Empty;
                //var filePath = @"C:\Temp\DB Tool\";
                //var fileName = DateTime.Now.Year + DateTime.Now.Month + DateTime.Now.Day + ".txt";
                //if (!Directory.Exists(filePath))
                //{
                //    Directory.CreateDirectory(filePath);
                //}
                //if (File.Exists(filePath + fileName))
                //{
                //    txtLog.Text = File.ReadAllText(filePath + fileName);
                //}

                var data = new QueryLog.Data();
                data.ConnectionId = ConnectionId;
                data.FromDate     = DateTime.Today;

                var logList = QueryLog.Search(data);
                if (logList != null && logList.Rows.Count > 0)
                {
                    foreach (DataRow dr in logList.Rows)
                    {
                        var dt = Convert.ToDateTime(dr["CreatedDate"]);
                        txtLog.AppendText("--------Executed on: " + dt.ToString("MM-dd-yyyy") + " " + dt.Hour + ":" + dt.Minute + ":" + dt.Second + "-------\n");
                        txtLog.AppendText(Convert.ToString(dr["QueryText"]) + "\n");
                        txtLog.AppendText("\n");
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
        private void LoadSQLLog()
        {
            txtLog.ResetText();
            var data = new QueryLog.Data();

            data.ConnectionId = ConnectionId;
            data.FromDate     = DateTime.Today;

            var logList = QueryLog.Search(data);

            if (logList != null && logList.Rows.Count > 0)
            {
                foreach (DataRow dr in logList.Rows)
                {
                    var dt = Convert.ToDateTime(dr["CreatedDate"]);
                    txtLog.AppendText("--------Executed on: " + dt.ToString("MM-dd-yyyy") + " " + dt.Hour + ":" + dt.Minute + ":" + dt.Second + "-------\n");
                    txtLog.AppendText(Convert.ToString(dr["QueryText"]) + "\n");
                    txtLog.AppendText("\n");
                }
            }
        }
示例#9
0
        public IActionResult SearchByDateAndName()
        {
            QueryLog details = CreateLog(Request.Path);

            var participant = Request.Headers["participant"];

            details.parameters.Add(participant);

            var date = Request.Headers["crash"];

            details.parameters.Add(date);

            var result = _repo.FindByDateAndName(participant, date);

            if (result.Count() != 0)
            {
                details.succeeded    = true;
                details.return_count = result.Count();
            }
            // _log.Query(details);
            return(new OkObjectResult(result));
        }
示例#10
0
        public BindingDetail Find()
        {
            BindingDetail bindingDetail = new BindingDetail();

            QueryLog.Write(QueryType.Find, EntityType.BindingTemplate);

            //
            // Validate find parameters.
            //
            Utility.IsValidKey(EntityType.BusinessService, ServiceKey);

            //
            // Process each find constraint.
            //
            FindBuilder find = new FindBuilder(EntityType.BindingTemplate, FindQualifiers, ServiceKey);

            //
            // If no search arguments are specified, return an empty result
            // set.
            //
            if (Utility.CollectionEmpty(TModelBag))
            {
                return(bindingDetail);
            }

            try
            {
                int rows = 1;

                //
                // Find entities with matching parent key.
                //
                if (!Utility.StringEmpty(ServiceKey))
                {
                    rows = find.FindByParentKey(ServiceKey);
                }

                //
                // Find entities with matching TModel bag items.
                //
                if (!Utility.CollectionEmpty(TModelBag))
                {
                    rows = find.FindByTModelBag(TModelBag);
                }

                //
                // Process the find result set.
                //
                if (0 == rows)
                {
                    //
                    // Cleanup any temporary tables.
                    //
                    find.Abort();
                }
                else if (0 == MaxRows)
                {
                    bindingDetail.Truncated = Truncated.True;
                    return(bindingDetail);
                }
                else
                {
                    //
                    // Read in the find results.
                    //
                    SqlDataReaderAccessor      reader;
                    SqlStoredProcedureAccessor sp;
                    sp = find.RetrieveResults(MaxRows);

                    reader = sp.ExecuteReader();

                    try
                    {
                        while (reader.Read())
                        {
                            bindingDetail.BindingTemplates.Add(reader.GetGuidString("entityKey"));
                        }
                    }
                    finally
                    {
                        reader.Close();
                    }

                    if (sp.Parameters.GetBool("@truncated"))
                    {
                        bindingDetail.Truncated = Truncated.True;
                    }
                    else
                    {
                        bindingDetail.Truncated = Truncated.False;
                    }

                    foreach (BindingTemplate bindingTemplate in bindingDetail.BindingTemplates)
                    {
                        bindingTemplate.Get();
                    }
                }
            }
            catch (Exception)
            {
                find.Abort();
                throw;
            }

            return(bindingDetail);
        }
示例#11
0
        /// ****************************************************************
        ///   public Get
        ///	----------------------------------------------------------------
        ///	  <summary>
        ///		Retrieves the bindingTemplate details from the database.
        ///	  </summary>
        ///	----------------------------------------------------------------
        ///   <returns>
        ///	  </returns>
        ///	----------------------------------------------------------------
        ///	  <remarks>
        ///	    The bindingKey must be set prior to execution of this call.
        ///	  </remarks>
        /// ****************************************************************
        ///
        public override void Get()
        {
            Debug.Enter();

            SqlStoredProcedureAccessor sp = new SqlStoredProcedureAccessor("net_bindingTemplate_get_batch");

            sp.Parameters.Add("@bindingKey", SqlDbType.UniqueIdentifier);
            sp.Parameters.Add("@serviceKey", SqlDbType.UniqueIdentifier, ParameterDirection.Output);
            sp.Parameters.Add("@URLTypeID", SqlDbType.TinyInt, ParameterDirection.Output);
            sp.Parameters.Add("@accessPoint", SqlDbType.NVarChar, UDDI.Constants.Lengths.AccessPoint, ParameterDirection.Output);
            sp.Parameters.Add("@hostingRedirector", SqlDbType.UniqueIdentifier, ParameterDirection.Output);

            sp.Parameters.SetGuidFromString("@bindingKey", BindingKey);

            SqlDataReaderAccessor reader      = null;
            ArrayList             instanceIds = new ArrayList();

            try
            {
                //
                // net_bindingTemplate_get will return the objects contained in a business in the following order:
                //
                //	- descriptions
                //  - tmodel instance infos
                reader = sp.ExecuteReader();

                //
                // Read the descriptions
                //
                Descriptions.Read(reader);

                //
                // Read the tmodel instance infos
                //
                if (true == reader.NextResult())
                {
                    instanceIds = TModelInstanceInfos.Read(reader);
                }
            }
            finally
            {
                if (null != reader)
                {
                    reader.Close();
                }
            }

            //
            // These calls will make separate sproc calls, so we have to close our reader first.
            //
            TModelInstanceInfos.Populate(instanceIds);

            //
            // Get output parameters
            //
            ServiceKey                   = sp.Parameters.GetGuidString("@serviceKey");
            AccessPoint.URLType          = (URLType)sp.Parameters.GetInt("@URLTypeID");
            AccessPoint.Value            = sp.Parameters.GetString("@accessPoint");
            HostingRedirector.BindingKey = sp.Parameters.GetGuidString("@hostingRedirector");

#if never
            SqlStoredProcedureAccessor sp = new SqlStoredProcedureAccessor("net_bindingTemplate_get");

            sp.Parameters.Add("@bindingKey", SqlDbType.UniqueIdentifier);
            sp.Parameters.Add("@serviceKey", SqlDbType.UniqueIdentifier, ParameterDirection.Output);
            sp.Parameters.Add("@URLTypeID", SqlDbType.TinyInt, ParameterDirection.Output);
            sp.Parameters.Add("@accessPoint", SqlDbType.NVarChar, UDDI.Constants.Lengths.AccessPoint, ParameterDirection.Output);
            sp.Parameters.Add("@hostingRedirector", SqlDbType.UniqueIdentifier, ParameterDirection.Output);

            sp.Parameters.SetGuidFromString("@bindingKey", BindingKey);

            sp.ExecuteNonQuery();

            ServiceKey                   = sp.Parameters.GetGuidString("@serviceKey");
            AccessPoint.URLType          = (URLType)sp.Parameters.GetInt("@URLTypeID");
            AccessPoint.Value            = sp.Parameters.GetString("@accessPoint");
            HostingRedirector.BindingKey = sp.Parameters.GetGuidString("@hostingRedirector");

            //
            // Get all contained objects.
            //
            Descriptions.Get(BindingKey, EntityType.BindingTemplate);
            TModelInstanceInfos.Get(BindingKey);
#endif

            QueryLog.Write(QueryType.Get, EntityType.BindingTemplate);
        }
        public string e(Querye querye)
        {
            Dictionary <string, object> metaData = null;
            QueryResult qr        = null;
            Stopwatch   stopWatch = null;

            bool   includeServerMetrics = false;
            bool   returnColumnNames    = false;
            string queryName            = querye.d;

            var inCourseRequest = InCourseRequest.New();
            OrdenesApplication ordenesApplication = OrdenesApplication.Instance;

            inCourseRequest.SecurityTokenId = ordenesApplication.GetSecurityTokenIdFromHeader();
            inCourseRequest.Agencia         = ordenesApplication.GetSecurityAgenciaFromHeader();

            Query query = null;

            try
            {
                SecurityHelper.ensureAuthenticated(inCourseRequest);
                query = JsonConvert.DeserializeObject <Query>(querye.d, new JsonSerializerSettings
                {
                    TypeNameHandling = TypeNameHandling.Objects,
                    TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple
                });

                var type = (QueryType)Enum.Parse(typeof(QueryType), query.Type);

                //includeServerMetrics = null != opts && opts.ContainsKey("includeServerMetrics");
                //returnColumnNames = null != opts && opts.ContainsKey("returnColumnNames");

                includeServerMetrics = null != query.Options && query.Options.Exists(x => x.Key.Equals("includeServerMetrics", StringComparison.OrdinalIgnoreCase));
                returnColumnNames    = null != query.Options && query.Options.Exists(x => x.Key.Equals("returnColumnNames", StringComparison.OrdinalIgnoreCase));

                if (includeServerMetrics)
                {
                    stopWatch = Stopwatch.StartNew();
                    metaData  = new Dictionary <string, object>(1);
                }

                SecurityHelper.ensureAuthorized(query, inCourseRequest);
                queryName = query.Name;
                //query.ensureAuthorized(inCourseRequest);
                //var queryName = query.getDecriptedQueryName();

                //TODO Encender QueryLog.Start para loguear... hay que adaptarlo a Ordenes
                QueryLog.Start(query, inCourseRequest);

                var requireIdentity = query.Options.Find(x => x.Key.Equals("requireIdentityFilter", StringComparison.OrdinalIgnoreCase));
                // Es comun que varias consultas necesiten el usuario que las activa....
                if (requireIdentity != null && Convert.ToBoolean(requireIdentity.Value))
                {
                    //query.Filters.Add("IdUsuario", session.Identity_rid);
                    query.Filters.Add(new Parameter()
                    {
                        Key = "IdUsuario", Value = MAEUserSession.Instancia.IdUsuario
                    });
                }


                if (query.Options.Exists(x => x.Key == "extendToKnownType"))
                {
                    ExtendQueryFilters(query);
                }
                if (queryName.Contains("_CUSTOM_"))
                {
                    qr = new QueryResult();
                    var    tName  = queryName.Split(new string[] { "_CUSTOM_" }, StringSplitOptions.None)[1] + "CustomQueryById";
                    object result = reflect(query, tName);

                    qr.Data     = new object[] { result };
                    qr.Status   = "EX0000";
                    qr.MetaData = metaData;
                }
                else
                {
                    switch (type)
                    {
                    case QueryType.Grid:
                        var r = new QueryPagingResult();

                        int      totalRows;
                        string[] columnNames;
                        object[] r_grid = null;
                        var      draw   = 0;
                        //query.Filters.Remove("maxrecord"); //TODO: porque remueves este parametro?
                        if (query.Options.Exists(x => x.Key.Equals("gridAdapter", StringComparison.OrdinalIgnoreCase)))
                        {
                            var result = (CustomQueryReturn)reflect(query, queryName);
                            r_grid    = result.Data;
                            totalRows = result.TotalRows;
                        }
                        else
                        {
                            r_grid = SqlServerHelper.RunGrid("orden_owner." + queryName, query.Filters, out columnNames, out totalRows);
                            if (returnColumnNames)
                            {
                                r.ColumnNames = columnNames;
                            }
                        }

                        var pageSize = query.Filters.Find(i => i.Key == "pageSize");
                        draw = (pageSize != null) ? Convert.ToInt32(pageSize.Value) : totalRows;

                        r.Data            = r_grid;
                        r.Status          = "EX0000";
                        r.MetaData        = metaData;
                        r.draw            = (int)draw;
                        r.recordsTotal    = totalRows;
                        r.recordsFiltered = totalRows;    //r_grid.Length;

                        qr = r;
                        break;

                    case QueryType.Combos:
                        qr = new QueryResult();
                        DatabaseQueryResult r_combos = null;
                        if (query.Options.Exists(x => x.Key == "filtersAdapter"))
                        {
                            r_combos = (DatabaseQueryResult)reflect(query, queryName);
                        }
                        else
                        {
                            r_combos = SqlServerHelper.RunCombos("orden_owner." + queryName, query.Filters);
                        }
                        qr.Data     = r_combos.ResultSets.ToArray();
                        qr.Status   = "EX0000";
                        qr.MetaData = metaData;
                        break;

                    case QueryType.Data:
                        qr          = new QueryResult();
                        qr.Data     = new object[1]; // TODO: FIXME: arreglar para tener mas de un data set
                        qr.Data[0]  = SqlServerHelper.RunDictionary("orden_owner." + queryName, query.Filters);
                        qr.Status   = "EX0000";
                        qr.MetaData = metaData;
                        break;

                    case QueryType.FullRecord:
                        if (query.Options.Exists(x => x.Key.Equals("gridAdapter", StringComparison.OrdinalIgnoreCase)))
                        {
                            var rqr    = new QueryPagingResult();
                            var result = (CustomQueryReturn)reflect(query, queryName);
                            r_grid    = result.Data;
                            totalRows = result.TotalRows;
                            draw      = totalRows;

                            rqr.Data            = r_grid;
                            rqr.Status          = "EX0000";
                            rqr.MetaData        = metaData;
                            rqr.draw            = (int)draw;
                            rqr.recordsTotal    = totalRows;
                            rqr.recordsFiltered = totalRows;    //r_grid.Length;
                            qr = rqr;
                        }
                        else
                        {
                            qr = new QueryResult();
                            var r_fullrecord = SqlServerHelper.RunFullRecord("orden_owner." + queryName, query.Filters);
                            qr.Data     = r_fullrecord.ResultSets.ToArray();
                            qr.Status   = "EX0000";
                            qr.MetaData = metaData;
                        }
                        break;

                    case QueryType.FullByEntity:
                        qr = new QueryResult();
                        //TODO ADAPTAR PARA USAR EF...
                        //var r_fullrecord = ReadDatabase.Instance.RunFullRecord("orden_owner." + queryName, query.Filters);
                        //qr.Data = r_fullrecord.ResultSets.ToArray();
                        qr.Status   = "EX0000";
                        qr.MetaData = metaData;
                        break;
                    }
                }

                //TODO Encender QueryLog.FinishOK para loguear... adapatar a Ordenes
                QueryLog.FinishOK(query, qr, inCourseRequest);
            }
            catch (SessionException sex)
            {
                qr = new QueryResult();

                qr.Data = new object[2] {
                    inCourseRequest.Id, "Sessión Expirada"
                };
                qr.Status   = "SE6666";
                qr.MetaData = metaData;

                //TODO: levantar log despues...
                QueryLog.FinishWithError(queryName, qr, sex, inCourseRequest);
            }
            catch (FunctionalException fe)
            {
                qr = new QueryResult();

                qr.Data = new object[2] {
                    inCourseRequest.Id, fe.Message
                };
                qr.Status   = string.Format("FE{0}", fe.Code.ToString("0000"));
                qr.MetaData = metaData;

                //TODO: levantar log despues...
                QueryLog.FinishWithError(queryName, qr, fe, inCourseRequest);
            }
            catch (Exception ex)
            {
                qr = new QueryResult();

                qr.Data = new object[2] {
                    inCourseRequest.Id, ex.Message
                };
                qr.Status   = "TE9999";
                qr.MetaData = metaData;

                //TODO: levantar log despues...
                QueryLog.FinishWithError(queryName, qr, ex, inCourseRequest);
            }
            finally
            {
                if (includeServerMetrics)
                {
                    qr.MetaData.Add("serverMetrics", stopWatch.ElapsedMilliseconds);
                    stopWatch.Reset();
                }
            }

            qr.RequestId = inCourseRequest.Id;
            WebOperationContext.Current.OutgoingResponse.ContentType = "application/json; charset=utf-8";
            return(JsonConvert.SerializeObject(qr));
        }
        public void CheckCommand(string command)
        {
            //Add new commands here as if statement

            if (command.ToLower().Equals("exit"))
            {
                Environment.Exit(0);
            }

            if (command.ToLower().Equals("clear database") || command.ToLower().Equals("cd"))
            {
                using (var db = new WapContext())
                {
                    var entries = db.QueryLogs.ToList();

                    Console.WriteLine("");
                    Console.WriteLine($"You have {entries.Count} entries in database!");
                    Console.WriteLine("Do you want to delete them?");
                    Console.WriteLine("y/n");
                    var decision = Console.ReadLine();

                    switch (decision)
                    {
                    case "n":
                        Console.WriteLine("Nothing changed!");
                        break;

                    case "y":
                        foreach (var entry in entries)
                        {
                            db.QueryLogs.Remove(entry);
                        }
                        db.SaveChanges();
                        Console.WriteLine($"Deleted {entries.Count} entries. Database is clean!");
                        break;

                    default:
                        Console.WriteLine("Nothing changed!");
                        break;
                    }
                }
            }

            if (command.ToLower().Equals("--help"))
            {
                Console.WriteLine("");
                Console.WriteLine("== List of Commands ==");
                foreach (string com in _commands)
                {
                    Console.WriteLine($"{com}");
                }
            }

            if (command.ToLower().Equals("weather city") || command.ToLower().Equals("wc"))
            {
                var     weatherMethods = new WeatherMethods();
                string  city           = "";
                decimal cityQueriesAll;
                decimal cityQueriesSingleMax = 0;

                using (var db = new WapContext())
                {
                    cityQueriesAll = db.QueryLogs.Count();
                    var queryMax = db.QueryLogs.GroupBy(x => x.CityName);

                    foreach (var c in queryMax)
                    {
                        var count = c.Count();
                        if (cityQueriesSingleMax < count)
                        {
                            cityQueriesSingleMax = count;
                            var que = c.Select(x => x.CityName);
                            city = que.First();
                        }
                    }
                }

                if (cityQueriesAll == 0)
                {
                    cityQueriesAll = 1;
                }

                if (cityQueriesSingleMax == 0)
                {
                    cityQueriesSingleMax = 1;
                }

                var qPercent = cityQueriesSingleMax / cityQueriesAll;
                qPercent *= 100;

                if (qPercent > 50 && !string.IsNullOrWhiteSpace(city) && cityQueriesAll > 3)
                {
                    Console.WriteLine("");
                    Console.WriteLine($"Would you like to check weather for {city}?");
                    Console.WriteLine("y/n ?");
                    var decision = Console.ReadLine();

                    switch (decision)
                    {
                    case "y":
                        using (var db = new WapContext())
                        {
                            db.Database.EnsureCreated();
                            var ql = new QueryLog
                            {
                                CityName  = city,
                                QueryDate = DateTime.Now
                            };

                            db.QueryLogs.Add(ql);
                            db.SaveChanges();
                        }
                        weatherMethods.ShowWeatherData(city);
                        break;

                    case "n":
                        weatherMethods.GetWeatherDataByCity();
                        break;

                    default:
                        weatherMethods.GetWeatherDataByCity();
                        break;
                    }
                }
                else
                {
                    weatherMethods.GetWeatherDataByCity();
                }
            }


            if (command.ToLower().Equals("show queries") || command.ToLower().Equals("sq"))
            {
                List <QueryLog> queryList;

                using (var db = new WapContext())
                {
                    db.Database.EnsureCreated();
                    queryList = db.QueryLogs.Take(100).ToList();
                }

                if (!queryList.Any())
                {
                    Console.WriteLine("There is no Query Logs in database!");
                }
                else
                {
                    Console.WriteLine();
                    Console.WriteLine("Listing queries");
                    Console.WriteLine("===============");

                    foreach (var log in queryList)
                    {
                        Console.WriteLine($"Log id: {log.QueryLogId}, " +
                                          $"City: {log.CityName}, Date: {log.QueryDate}");
                    }

                    Console.WriteLine("===============");
                }
            }

            if (command.ToLower().Equals("show queries analysis") || command.ToLower().Equals("sqa"))
            {
                string  city = "";
                decimal cityQueriesAll;
                decimal cityQueriesSingleMax = 0;

                using (var db = new WapContext())
                {
                    cityQueriesAll = db.QueryLogs.Count();
                    var queryMax = db.QueryLogs.GroupBy(x => x.CityName);

                    if (cityQueriesAll > 0)
                    {
                        foreach (var c in queryMax)
                        {
                            var count = c.Count();
                            if (cityQueriesSingleMax < count)
                            {
                                cityQueriesSingleMax = count;
                                var que = c.Select(x => x.CityName);
                                city = que.First();
                            }
                        }
                    }
                }

                if (cityQueriesAll > 0)
                {
                    var qPercent = cityQueriesSingleMax / cityQueriesAll;
                    qPercent *= 100;
                    qPercent  = Math.Round(qPercent, 3);

                    var crossEde = qPercent > 50;

                    Console.WriteLine("");
                    Console.WriteLine("");
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("========== Prediction Algorythm Analysis Data ==========");
                    Console.ForegroundColor = ConsoleColor.White;
                    Console.WriteLine("");
                    Console.WriteLine($"All entries: {cityQueriesAll}");
                    Console.WriteLine($"Most common city: {city}");
                    Console.WriteLine($"{city} entries: {cityQueriesSingleMax}");
                    Console.WriteLine($"{city} percentage: {qPercent}%");
                    Console.WriteLine($"Algorithm prediction city edge value = 50%");
                    Console.WriteLine($"Algorithm prediction city cross edge value? = {crossEde}");
                    Console.WriteLine("");
                    Console.WriteLine("========================================================");
                }
                else
                {
                    Console.WriteLine("There is no Query Logs in database!");
                }
            }
        }
示例#14
0
        /// ****************************************************************
        ///   public Get
        /// ----------------------------------------------------------------
        ///   <summary>
        ///   </summary>
        /// ****************************************************************
        ///
        public override void Get()
        {
            Debug.Enter();

            SqlStoredProcedureAccessor sp = new SqlStoredProcedureAccessor("net_businessEntity_get_batch");

            sp.Parameters.Add("@businessKey", SqlDbType.UniqueIdentifier);
            sp.Parameters.Add("@operatorName", SqlDbType.NVarChar, UDDI.Constants.Lengths.OperatorName, ParameterDirection.Output);
            sp.Parameters.Add("@authorizedName", SqlDbType.NVarChar, UDDI.Constants.Lengths.AuthorizedName, ParameterDirection.Output);

            sp.Parameters.SetGuidFromString("@businessKey", BusinessKey);

            SqlDataReaderAccessor reader     = null;
            ArrayList             contactIds = new ArrayList();

            try
            {
                //
                // net_businessEntity_get will return the objects contained in a business in the following order:
                //
                //	- descriptions
                //	- names
                //	- discoveryURLs
                //  - contacts
                //  - identifier bags
                //  - category bags
                //  - services
                //
                reader = sp.ExecuteReader();

                //
                // Read the descriptions
                //
                Descriptions.Read(reader);

                //
                // Read the names
                //
                if (true == reader.NextResult())
                {
                    Names.Read(reader);
                }

                //
                //
                // Read the discoveryURLs
                //
                if (true == reader.NextResult())
                {
                    DiscoveryUrls.Read(reader);
                }

                //
                // Read the contacts
                //
                if (true == reader.NextResult())
                {
                    contactIds = Contacts.Read(reader);
                }

                //
                // Read the identifier bags
                //
                if (true == reader.NextResult())
                {
                    IdentifierBag.Read(reader);
                }

                //
                // Read the category bags
                //
                if (true == reader.NextResult())
                {
                    CategoryBag.Read(reader);
                }

                //
                // Read the services
                //
                if (true == reader.NextResult())
                {
                    BusinessServices.Read(reader);
                }
            }
            finally
            {
                if (null != reader)
                {
                    reader.Close();
                }
            }

            //
            // These calls will make separate sproc calls, so we have to close our reader first.
            //
            BusinessServices.Populate();
            Contacts.Populate(contactIds);

            //
            // Get our output parameters.
            //
            Operator       = sp.Parameters.GetString("@operatorName");
            AuthorizedName = sp.Parameters.GetString("@authorizedName");

            //
            // If this entity was published to this node than add the
            // default discoveryURL.
            //
            if (Operator == Config.GetString("Operator"))
            {
                //
                // Only add the default discovery Url to this business
                // if it was published at this site.
                //
                DiscoveryUrls.AddDefaultDiscoveryUrl(BusinessKey);
            }

#if never
            SqlStoredProcedureAccessor sp = new SqlStoredProcedureAccessor("net_businessEntity_get");

            sp.Parameters.Add("@businessKey", SqlDbType.UniqueIdentifier);
            sp.Parameters.Add("@operatorName", SqlDbType.NVarChar, UDDI.Constants.Lengths.OperatorName, ParameterDirection.Output);
            sp.Parameters.Add("@authorizedName", SqlDbType.NVarChar, UDDI.Constants.Lengths.AuthorizedName, ParameterDirection.Output);

            sp.Parameters.SetGuidFromString("@businessKey", BusinessKey);

            sp.ExecuteNonQuery();

            Operator       = sp.Parameters.GetString("@operatorName");
            AuthorizedName = sp.Parameters.GetString("@authorizedName");

            //
            // Retrieve contained objects.
            //
            Descriptions.Get(BusinessKey, EntityType.BusinessEntity);
            Names.Get(BusinessKey, EntityType.BusinessEntity);
            DiscoveryUrls.Get(BusinessKey);

            //
            // If this entity was published to this node than add the
            // default discoveryURL.
            //
            if (Operator == Config.GetString("Operator"))
            {
                //
                // Only add the default discovery Url to this business
                // if it was published at this site.
                //
                DiscoveryUrls.AddDefaultDiscoveryUrl(BusinessKey);
            }

            Contacts.Get(BusinessKey);
            BusinessServices.Get(BusinessKey);
            IdentifierBag.Get(BusinessKey, EntityType.BusinessEntity, KeyedReferenceType.IdentifierBag);
            CategoryBag.Get(BusinessKey, EntityType.BusinessEntity, KeyedReferenceType.CategoryBag);
#endif
            QueryLog.Write(QueryType.Get, EntityType.BusinessEntity);

            Debug.Leave();
        }
示例#15
0
        public BusinessList Find()
        {
            BusinessList businessList = new BusinessList();

            QueryLog.Write(QueryType.Find, EntityType.BusinessEntity);

            //
            // Process each find constraint.
            //
            FindBuilder find = new FindBuilder(EntityType.BusinessEntity, FindQualifiers);

            //
            // If no search arguments are specified, return an empty result
            // set.
            //
            if (Utility.CollectionEmpty(Names) &&
                Utility.CollectionEmpty(DiscoveryUrls) &&
                Utility.CollectionEmpty(IdentifierBag) &&
                Utility.CollectionEmpty(CategoryBag) &&
                Utility.CollectionEmpty(TModelBag))
            {
                return(businessList);
            }

            //
            // Validate find parameters.
            //

            if (!Utility.CollectionEmpty(Names))
            {
                Names.ValidateForFind();
            }
            else
            {
                Debug.Verify(!find.CaseSensitiveMatch && !find.ExactNameMatch,
                             "UDDI_ERROR_UNSUPPORTED_FINDBE_NAMEFQNONAMES", ErrorType.E_unsupported);
            }


            //
            // TODO: Override may be better for these calls to KeyedReference.Validate because no parent key is used
            //
            if (!Utility.CollectionEmpty(IdentifierBag))
            {
                IdentifierBag.Validate("", KeyedReferenceType.IdentifierBag);
            }

            if (!Utility.CollectionEmpty(CategoryBag))
            {
                CategoryBag.Validate("", KeyedReferenceType.CategoryBag);
            }

            try
            {
                int rows = 1;

                //
                // Find entities with matching identifier bag items.
                //
                if (!Utility.CollectionEmpty(IdentifierBag))
                {
                    rows = find.FindByKeyedReferences(KeyedReferenceType.IdentifierBag, IdentifierBag);
                }

                //
                // Find entities with matching category bag items.
                //
                if (rows > 0 && !Utility.CollectionEmpty(CategoryBag))
                {
                    rows = find.FindByKeyedReferences(KeyedReferenceType.CategoryBag, CategoryBag);
                }

                //
                // Find entities with matching TModel bag items.
                //
                if (rows > 0 && !Utility.CollectionEmpty(TModelBag))
                {
                    rows = find.FindByTModelBag(TModelBag);
                }

                //
                // Find entities with matching discovery URLs
                //
                if (rows > 0 && !Utility.CollectionEmpty(DiscoveryUrls))
                {
                    rows = find.FindByDiscoveryUrls(DiscoveryUrls);
                }

                //
                // Find entities with matching names
                //
                if (rows > 0 && !Utility.CollectionEmpty(Names))
                {
                    rows = find.FindByNames(Names);
                }

                //
                // Process the find result set.
                //
                if (0 == rows)
                {
                    //
                    // Cleanup any temporary tables.
                    //
                    find.Abort();
                }                 // TODO: review
                else if (0 == MaxRows)
                {
                    businessList.Truncated = Truncated.True;
                    return(businessList);
                }
                else
                {
                    //
                    // Read in the find results.
                    //
                    SqlDataReaderAccessor      reader;
                    SqlStoredProcedureAccessor sp;
                    sp = find.RetrieveResults(MaxRows);
//
// TODO: return reader, not the whole SPA
//
                    reader = sp.ExecuteReader();

                    try
                    {
                        if (find.ServiceSubset)
                        {
                            //
                            // For a service subset search, we limit the result set
                            // to those services that matched the category bag
                            // search criteria.
                            //
                            BusinessInfo businessInfo = null;
                            string       prevKey      = null;

                            while (reader.Read())
                            {
                                string businessKey = reader.GetString("entityKey");

                                if (prevKey != businessKey)
                                {
                                    businessInfo = new BusinessInfo(businessKey);
                                    businessList.BusinessInfos.Add(businessInfo);
                                }

                                businessInfo.ServiceInfos.Add(
                                    reader.GetString("subEntityKey"),
                                    businessKey);

                                prevKey = businessKey;
                            }
                        }
                        else
                        {
                            //
                            // For non-service subset searches, we will simply
                            // return a list of businesses with all services.
                            //
                            while (reader.Read())
                            {
                                businessList.BusinessInfos.Add(reader.GetString("entityKey"));
                            }
                        }
                    }
                    finally
                    {
                        reader.Close();
                    }

                    if (sp.Parameters.GetBool("@truncated"))
                    {
                        businessList.Truncated = Truncated.True;
                    }
                    else
                    {
                        businessList.Truncated = Truncated.False;
                    }

                    //
                    // Get the actual business info and service info data.  For
                    // a service subset, we'll grab just those services that we
                    // populated.  For all other searches, we'll get all service
                    // infos.
                    //
                    if (find.ServiceSubset)
                    {
                        foreach (BusinessInfo businessInfo in businessList.BusinessInfos)
                        {
                            businessInfo.Get(false);

                            foreach (ServiceInfo serviceInfo in businessInfo.ServiceInfos)
                            {
                                serviceInfo.Get();
                            }
                        }
                    }
                    else
                    {
                        foreach (BusinessInfo businessInfo in businessList.BusinessInfos)
                        {
                            businessInfo.Get(true);
                        }
                    }
                }
            }
            catch (Exception)
            {
                find.Abort();
                throw;
            }

            return(businessList);
        }
示例#16
0
        private static void SepareDataLog(string entree)
        {
            StringReader sr = new StringReader(entree);

            while (sr.Peek() >= 0)
            {
                string log  = sr.ReadLine().ToString();
                string log2 = log.Substring(log.LastIndexOf(']') + 1);

                //Si le log contiens l'adresse local alors on récupère les données
                if (log.Contains("127.0.0.1"))
                {
                    DateTime dateTime  = DateTime.Parse(log.Split(' ')[0] + " " + log.Split(' ')[1]);
                    string   domain    = log2.Split(' ')[3];
                    bool     blackTrue = false;
                    string   ip        = "";
                    try
                    {
                        ip = Dns.GetHostAddresses(domain).FirstOrDefault().ToString();
                    }
                    catch (Exception e)
                    {
                        ip = "-";
                    }

                    if (blacklists.Any(s => domain.Contains(s.Domain)) || blacklists.Find(x => x.Domain == ".") != null || TLD.Contains(domain))
                    {
                        blackTrue = true;

                        for (int i = 0; i < whitelists.Count && blackTrue; i++)
                        {
                            try
                            {
                                string ipDomain      = Dns.GetHostAddresses(domain).FirstOrDefault().ToString();
                                string ipDomainLists = Dns.GetHostAddresses(whitelists[i].Domain).FirstOrDefault().ToString();

                                if (domain.Contains(whitelists[i].Domain) && ipDomain.Equals(ipDomainLists))
                                {
                                    blackTrue = false;
                                }
                            }
                            catch (Exception e) { }
                        }
                    }

                    QueryLog queryLog = new QueryLog
                    {
                        DateTime  = dateTime,
                        Domain    = domain,
                        IP        = ip,
                        Blacklist = blackTrue
                    };

                    if (!querylogs.Contains(queryLog))
                    {
                        //Ajout a la liste
                        querylogs.Add(queryLog);
                    }

                    // Ajoute a la liste Toplist ou le hits
                    addTopList(domain);
                }
            }
        }