Ejemplo n.º 1
0
        public double GetCurrentValue(string Id)
        {
            ConnectDB conn     = new ConnectDB();
            var       database = conn.Conn();

            IMongoCollection <BsonDocument> collection;
            FilterDefinition <BsonDocument> filter;
            var dbStr = Id.Substring(0, 2) switch
            {
                "EF" => "EXH_FAN",
                "AC" => "AC",
                "LT" => "LIGHT",
                "HD" => "HUM",
                "CA" => "PI_CAM",
                _ => ""
            };
            var json = new DBManger().DataBase.GetCollection <CurrentDataModel>(dbStr).Find(Builders <CurrentDataModel> .Filter.Eq("devicesId", Id)).Sort(Builders <CurrentDataModel> .Sort.Descending(s => s.latest_checking_time)).ToList();

            if (json.Count() > 0 && json != null)
            {
                //Debug.WriteLine("current =="+ json.First().current+"   "+ json.First().latest_checking_time);
                return(json.First().current);
            }
            else
            {
                //Debug.WriteLine("current ==0" );

                return(0);
            }
        }
        public string Post(object imgJson)
        {
            var json        = System.Text.Json.JsonSerializer.Serialize(imgJson);
            var piJsonModel = JsonConvert.DeserializeObject <pi_cam_model>(json);

            var deviceFilter = Builders <MongoDevicesListModel> .Filter.Eq(x => x.devicesId, piJsonModel.deviceId);

            var PiFilter = Builders <pi_cam_model> .Filter.Eq(x => x.deviceId, piJsonModel.deviceId);

            var deviceList = new DBManger().DataBase.GetCollection <MongoDevicesListModel>("DEVICES_LIST").Find(deviceFilter).ToList();

            //Debug.WriteLine(get.deviceId +"has "+check.Count());
            try
            {
                if (deviceList.Count() != 0)
                {//user need added to devicesList first
                    var piCamList = new DBManger().DataBase.GetCollection <pi_cam_model>("PI_CAM").Find(PiFilter).ToList();
                    if (piCamList.Count() != 0)
                    {
                        var up = Builders <pi_cam_model> .Update
                                 .Set(x => x.base_cam_img, piJsonModel.base_cam_img)
                                 .Set(x => x.latest_checking_time, DateTime.UtcNow.AddHours(8));

                        var UpdateResult = new DBManger().DataBase.GetCollection <pi_cam_model>("PI_CAM").FindOneAndUpdateAsync(u => u.deviceId == piJsonModel.deviceId, up);
                        if (UpdateResult == null)
                        {
                            Debug.WriteLine("Can not Update PI CAM Result =>> " + UpdateResult);
                            throw new System.ArgumentException("Update PI cam to db fail", "original");
                        }
                    }
                    else
                    {//first upload data
                        var newCamModelTodb = new pi_cam_model()
                        {
                            roomId               = deviceList.FirstOrDefault().roomId,
                            deviceId             = piJsonModel.deviceId,
                            latest_checking_time = DateTime.UtcNow.AddHours(8),
                            base_cam_img         = piJsonModel.base_cam_img,
                            current              = 0
                        };
                        new DBManger().DataBase.GetCollection <pi_cam_model>("PI_CAM").InsertOneAsync(newCamModelTodb);
                    }
                }
                else  // didn't add to the devicesList
                {
                    throw new System.ArgumentException("Please add the device to db on UI", "original");
                }
            }catch (Exception e) {
                return("{ status: false," + "msg:" + e.Message.ToString() + "}");
            };

            return("{ status: true," + "msg: Success, Pi cam updated}");
        }