예제 #1
0
        public void DatasetManager_GetData_Measurements()
        {
            DatasetManager   dm     = new DatasetManager(connectionKey, "TESTSESSION");
            List <DataPoint> series = dm.GetData("MeasurementLog", "Measure", null);

            Assert.IsTrue(series.Count > 0);
        }
예제 #2
0
        public void DatasetManager_GetData_Measurements_DataScreens()
        {
            //the getfilters function gets distinct values from a table field that will
            //used to build the query to get the dataset. Controler only pulling from fireincidents for now. need to make it dynamic.
            List <DataScreen> filters = new List <DataScreen>();
            DataScreen        qf      = new DataScreen();

            qf.Field    = "UnitOfMeasure";
            qf.Operator = "=";
            qf.Value    = "centimeters";
            qf.Type     = "sql"; //tell the parser is a sql query
            qf.Junction = "AND"; //since more filters are to follow add a conjunction.
            filters.Add(qf);

            qf          = new DataScreen();
            qf.Field    = "Measure";
            qf.Operator = "BETWEEN";
            qf.Type     = "sql"; //tell the parser is a sql query
            qf.Value    = "20";
            qf.Order    = 0;     //this is the first part of the between statement
            qf.Junction = "AND";
            filters.Add(qf);

            qf          = new DataScreen();
            qf.Field    = "Measure";
            qf.Operator = "BETWEEN";
            qf.Type     = "sql"; //tell the parser is a sql query
            qf.Value    = "50";
            qf.Order    = 1;     //second part of the between statement
            filters.Add(qf);

            DatasetManager   dm     = new DatasetManager(connectionKey, "TESTSESSION");
            List <DataPoint> series = dm.GetData("MeasurementLog", "Measure", null);

            Assert.IsTrue(series.Count > 0);
        }
예제 #3
0
        public ServiceResult GetDataset(string category = "", string field = "")
        {
            List <DataPoint> dataSet;

            if (string.IsNullOrWhiteSpace(category))
            {
                return(ServiceResponse.Error("You must provide a category to get the datasets."));
            }

            if (string.IsNullOrWhiteSpace(field))
            {
                return(ServiceResponse.Error("You must provide a series to get the datasets."));
            }

            if (CurrentUser == null)
            {
                return(ServiceResponse.Error("You must be logged in to access this function."));
            }



            if (category?.ToLower() == "users" && CurrentUser.SiteAdmin == false)    //BACKLOG  turn on the flag to log permission routes to log this. add numeric value to roles sow we can include multiple roles by doing math >= roleWeight
            {
                RoleManager roleManager = new RoleManager(Globals.DBConnectionKey, CurrentUser);

                if (!roleManager.IsUserInRole(CurrentUser.UUID, "Admin", CurrentUser.AccountUUID) || !roleManager.IsUserInRole(CurrentUser.UUID, "owner", CurrentUser.AccountUUID))
                {
                    return(ServiceResponse.Error("You are not authorized to query the category:" + category));
                }
            }

            try
            {
                Task <string> content = ActionContext.Request.Content.ReadAsStringAsync();
                if (content == null)
                {
                    return(ServiceResponse.Error("No screens were sent."));
                }

                string body = content.Result;

                if (string.IsNullOrEmpty(body))
                {
                    return(ServiceResponse.Error("No screens were sent."));
                }

                List <DataScreen> screens = JsonConvert.DeserializeObject <List <DataScreen> >(body);

                DatasetManager dm = new DatasetManager(Globals.DBConnectionKey, Request.Headers?.Authorization?.Parameter);
                dataSet = dm.GetData(category, field, screens);
                return(ServiceResponse.OK("", dataSet));
            }
            catch (Exception ex)
            {
                Debug.Assert(false, ex.Message);
                SystemLogger logger = new SystemLogger(Globals.DBConnectionKey);

                logger.InsertError(ex.Message, "ReportsController", "GetDataset");
                return(ServiceResponse.Error("Error retrieving dataset."));
            }
        }