Exemple #1
0
    private ConfigSingleton()
    {
        MongoDBConnector conn = MongoDBConnector.GetInstance();

        TestCases = new List <TestCase>();
        var db         = conn.GetDatabase();
        var colorSpace = JsonUtility.FromJson <ConfigContent>(File.ReadAllText("./server_config.json")).ColorSpace;
        var collection = db.GetCollection <BsonDocument>("testCases");

        foreach (var item in collection.Find(new BsonDocument()).Project(Builders <BsonDocument> .Projection.Exclude("_id")).ToList())
        {
            var jsonString = item.ToJson();
            TestCases.Add(JsonUtility.FromJson <TestCase>(jsonString));
        }
        collection = db.GetCollection <BsonDocument>("ColorSpaces");
        var colorSpaceRaw = collection.Find(new BsonDocument {
            { "Name", colorSpace }
        }).Project(Builders <BsonDocument> .Projection.Exclude("_id").Exclude("Name")).First();

        ColorSpaceContainer = JsonConvert.DeserializeObject <ColorSpaceContainer>(colorSpaceRaw.ToJson());
        // Parsing ColorSpaceContainer to list of color ranges:
        ColorRanges = new List <ColorRange>();
        int maax = ColorSpaceContainer.Labels.Count;

        for (int i = 0; i < maax; i++)
        {
            ColorRanges.Add(new ColorRange(ColorSpaceContainer.Labels[i], ColorSpaceContainer.Payload[i]));
        }
    }
    public void GotTargetInfos(NetworkMessage message)
    {
        TargetInfosMessage        msg         = message.ReadMessage <TargetInfosMessage>();
        List <List <TargetInfo> > targetInfos = msg.Content.TargetInfos;
        string    user           = msg.Content.User;
        var       db             = MongoDBConnector.GetInstance().GetDatabase();
        var       collection     = db.GetCollection <BsonDocument>("TargetInfos");
        var       userCollection = db.GetCollection <BsonDocument>("Users");
        BsonArray arr            = new BsonArray();

        foreach (var list in targetInfos)
        {
            BsonArray innerArr = new BsonArray();
            foreach (var targetInfo in list)
            {
                innerArr.Add(new BsonDocument(targetInfo.ToBsonDocument()));
            }
            arr.Add(innerArr);
        }
        BsonDocument document = new BsonDocument
        {
            { "UserName", user },
            { "TargetInfos", arr }
        };

        collection.InsertOne(document);
    }
    public void DataBroker(NetworkMessage message)
    {
        RequestMessage msg = message.ReadMessage <RequestMessage>();

        switch (msg.Type)
        {
        case RequestType.UserList:
            List <User> userList   = new List <User>();
            var         db         = MongoDBConnector.GetInstance().GetDatabase();
            var         collection = db.GetCollection <BsonDocument>("Users");
            foreach (var item in collection.Find(new BsonDocument {
                { "TestGroup", _config.TestGroup }
            }).Project(Builders <BsonDocument> .Projection.Exclude("_id").Include("Name")).ToList())
            {
                var jsonString = item.ToJson();
                userList.Add(JsonUtility.FromJson <User>(jsonString));
            }
            NetworkServer.SendToClient(message.conn.connectionId, MyMsgType.UserList, new UserListMessage(userList));
            break;

        case RequestType.ColorRanges:
            NetworkServer.SendToClient(message.conn.connectionId, MyMsgType.ColorRanges, new ColorRangesMessage(_config.ColorRanges));
            break;
        }
    }
        public SensorDataController()
        {
            _mqtt       = new Mqtt();
            _repository = new WeatherRepository(MongoDBConnector.GetInstance());
            HttpClient httpClient = new HttpClient();

            httpClient.PostAsync("http://sensoranalyticsservice/api/SensorAnalytics/CreateAnalyticsService", null);
        }
    public void CheckDevice(NetworkMessage message)
    {
        DeviceDataMessage    msg = message.ReadMessage <DeviceDataMessage>();
        DeviceIdentification deviceIdentification = msg.DeviceIdentification;
        var db         = MongoDBConnector.GetInstance().GetDatabase();
        var collection = db.GetCollection <BsonDocument>("Devices");
        var results    = collection.Find(new BsonDocument {
            { "DevId", deviceIdentification.DevId }
        }).ToList();
        int addr = -1;

        if (results.Count > 0)
        {
            foreach (var result in results)
            {
                if (result["ScreenWidth"].AsInt32 == deviceIdentification.ScreenWidth &&
                    result["ScreenHeight"].AsInt32 == deviceIdentification.ScreenHeight &&
                    result["DeviceClass"].AsInt32 == (int)deviceIdentification.DeviceClass)
                {
                    addr = result["id"].AsInt32;
                }
            }
        }
        if (addr == -1)
        {
            var value = collection.Find(new BsonDocument()).Sort(new BsonDocument {
                { "id", -1 }
            }).Limit(1).Project(Builders <BsonDocument> .Projection.Exclude("_id").Include("id"));
            int maxid;
            if (value.Count() > 0)
            {
                maxid = JsonUtility.FromJson <int>(value.ToJson());
            }
            else
            {
                maxid = 0;
            }
            var document = new BsonDocument
            {
                { "id", maxid + 1 },
                { "DevId", deviceIdentification.DevId },
                { "ScreenWidth", deviceIdentification.ScreenWidth },
                { "ScreenHeight", deviceIdentification.ScreenHeight },
                { "DeviceClass", deviceIdentification.DeviceClass }
            };
            collection.InsertOne(document);
            addr = maxid;
        }
        NetworkServer.SendToClient(message.conn.connectionId, MyMsgType.DeviceId, new IntegerMessage(addr));
    }
    public void AddUser(NetworkMessage message)
    {
        StoredUserMessage msg  = message.ReadMessage <StoredUserMessage>();
        StoredUser        user = msg.User;

        user.TestGroup = _config.TestGroup;
        //Generate random code:
        string code;
        var    resultDb = MongoDBConnector.GetInstance().GetResultsDatabase();
        var    registeredUsersCollection = resultDb.GetCollection <BsonDocument>("Users");
        int    count;

        do
        {
            code  = GenRandomCode();
            count = registeredUsersCollection.Find(new BsonDocument {
                { "_id", code }
            }).Limit(1).ToList().Count;
        } while (count != 0);
        user.Code = code;
        var db         = MongoDBConnector.GetInstance().GetDatabase();
        var collection = db.GetCollection <BsonDocument>("Users");
        var document   = new BsonDocument
        {
            { "Name", user.Name },
            { "TestGroup", user.TestGroup },
            { "Code", user.Code },
            { "Questionarie", new BsonDocument {
                  { "AgeGroup", user.Results.AgeGroup },
                  { "TouchFrequency", user.Results.TouchFrequency },
                  { "None", user.Results.None },
                  { "Smaller5", user.Results.Smaller5 },
                  { "Smaller11", user.Results.Smaller11 },
                  { "Greater11", user.Results.Greater11 },
                  { "Activities", user.Results.Activities },
                  { "ColorPerception", user.Results.ColorPerception }
              } }
        };

        collection.InsertOne(document);
        var devices = (user.Results.None.ToInt() << 3) +
                      (user.Results.Smaller5.ToInt() << 2) +
                      (user.Results.Smaller11.ToInt() << 1) +
                      user.Results.Greater11.ToInt();

        document = new BsonDocument
        {
            { "_id", code },
            { "AgeGroup", user.Results.AgeGroup },
            { "ColorPerception", user.Results.ColorPerception },
            { "TouchFrequency", user.Results.TouchFrequency },
            { "Activities", user.Results.Activities },
            { "Devices", devices }
        };
        registeredUsersCollection.InsertOne(document);
        var filter = Builders <BsonDocument> .Filter.Eq("_id", "UserCount");

        var update = Builders <BsonDocument> .Update.Inc("Count", 1);

        resultDb.GetCollection <BsonDocument>("counters").FindOneAndUpdate(filter, update);
    }