public ActionResult createPlantAndAddControlPlan(string researchId, FullPlant plant)
        {
            try
            {
                // checking if already plant with the same IP exsist and Running or Pending
                var plan = plantCollection.AsQueryable <PlantModel>().First(x => x.Env_control_address == plant.Env_control_address && x.Status == "Pending" ||
                                                                            x.Env_control_address == plant.Env_control_address && x.Status == "Running");

                if (plan != null)
                {
                    // return error - will not create another plant
                    return(Content(JsonConvert.SerializeObject(
                                       "ip already exsist and running or pending"
                                       )));
                }
            }

            catch { }
            try
            {
                var researchCollection    = dBContext.database.GetCollection <ResearchModel>("Research");
                var controlPlanCollection = dBContext.database.GetCollection <ControlPlanModel>("ControlPlan");
                Create(researchId, new PlantModel
                {
                    Plant_Name               = plant.Plant_Name,
                    Env_control_address      = plant.Env_control_address,
                    Growth_control_address   = plant.Growth_control_address,
                    Frequency_of_measurement = plant.Frequency_of_measurement,
                    Frequency_of_upload      = plant.Frequency_of_upload,
                    Status           = "Pending",
                    Humidity         = new List <Humidity>(),
                    Plant_size       = new List <Size>(),
                    Light            = new List <Light>(),
                    PowerConsumption = new List <PowerConsumption>(),
                    WaterAmount      = new List <WaterAmount>()
                });

                var plan = plantCollection.AsQueryable <PlantModel>().SingleOrDefault(x => x.Env_control_address == plant.Env_control_address && x.Status == "Pending");
                //var controlPlan = controlPlanCollection.AsQueryable<ControlPlanModel>().SingleOrDefault(x => ObjectId.Parse(x.PlantId) == plan.Id);
                var filter = Builders <ResearchModel> .Filter.Eq("_id", ObjectId.Parse(researchId));

                var update = Builders <ResearchModel> .Update
                             .Push("Plants", plan.Id.ToString());

                var result = researchCollection.UpdateOne(filter, update);

                controlPlanCollection.InsertOne(new ControlPlanModel
                {
                    Frequency_of_measurement = plant.Frequency_of_measurement,
                    Frequency_of_upload      = plant.Frequency_of_upload,
                    Intervals = plant.Intervals,
                    PlantId   = plan.Id.ToString()
                });
            }

            catch { }

            return(Content(JsonConvert.SerializeObject("success")));
        }
示例#2
0
        // GET: api/Plants
        public IEnumerable <FullPlant> Get()
        {
            List <FullPlant> fullPlantList = new List <Models.FullPlant>();

            var joinRecords = from p in BotanicGardenDB.tblPlants
                              join s in BotanicGardenDB.tblSpecies
                              on p.speciesID equals s.speciesID
                              select new { plantID = p.plantID, plantDescription = p.plantDescription, commonName = s.commonName, scientificName = s.scientificName };

            foreach (var r in joinRecords)
            {
                FullPlant fp = new FullPlant(r.plantID, r.plantDescription, r.commonName, r.scientificName);
                fullPlantList.Add(fp);
            }

            return(fullPlantList);
        }
示例#3
0
        // GET: api/Plants/5
        public FullPlant Get(int id)
        {
            var allPlants      = BotanicGardenDB.tblPlants;
            var allSpecies     = BotanicGardenDB.tblSpecies;
            var allCollections = BotanicGardenDB.tblCollections;

            var selectedPlant = allPlants.Where(p => p.plantID == id).First();

            int plantSpeciesFK      = (int)selectedPlant.speciesID;
            var currentPlantSpecies = allSpecies.Where(s => s.speciesID == plantSpeciesFK).First();

            int    plantID               = selectedPlant.plantID;
            string plantDescription      = selectedPlant.plantDescription;
            string speciesCommonName     = currentPlantSpecies.commonName;
            string speciesScientificName = currentPlantSpecies.scientificName;

            FullPlant outputPlantData = new FullPlant(plantID, plantDescription, speciesCommonName, speciesScientificName);

            return(outputPlantData);
        }