// DELETE: odata/IncubatorMeasures(5)
        public IHttpActionResult Delete([FromODataUri] int key)
        {
            IncubatorMeasure incubatorMeasure = db.IncubatorMeasures.Find(key);

            if (incubatorMeasure == null)
            {
                return(NotFound());
            }

            db.IncubatorMeasures.Remove(incubatorMeasure);
            db.SaveChanges();

            return(StatusCode(HttpStatusCode.NoContent));
        }
        // POST: odata/IncubatorMeasures
        public IHttpActionResult Post(IncubatorMeasure incubatorMeasure)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            incubatorMeasure.MeasuredOn = DateTime.Now;

            List <IncubatorPeriod> periods = new List <IncubatorPeriod>();
            var incubator = db.Incubators.Where(i => i.Id == incubatorMeasure.IncubatorId).FirstOrDefault();

            if (incubator == null)
            {
                return(NotFound());
            }

            periods = incubator.Periods.OrderBy(p => p.Order).ToList();
            if (periods.Count == 0)
            {
                return(BadRequest("No periods found"));
            }

            var date = incubator.StartedOn;

            if (!date.HasValue)
            {
                return(BadRequest("No start date on incubator"));
            }

            var index = 0;

            while (date < DateTime.Now && index < periods.Count)
            {
                date = date.Value.AddMinutes(periods[index].Timespan);
                index++;
            }
            var incubatorPeriodId = periods[index].Id;

            incubatorMeasure.IncubatorPeriodId = incubatorPeriodId;

            db.IncubatorMeasures.Add(incubatorMeasure);
            db.SaveChanges();

            return(Created(incubatorMeasure));
        }
        // PUT: odata/IncubatorMeasures(5)
        public IHttpActionResult Put([FromODataUri] int key, Delta <IncubatorMeasure> patch)
        {
            Validate(patch.GetEntity());

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            IncubatorMeasure incubatorMeasure = db.IncubatorMeasures.Find(key);

            if (incubatorMeasure == null)
            {
                return(NotFound());
            }

            patch.Put(incubatorMeasure);

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!IncubatorMeasureExists(key))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(Updated(incubatorMeasure));
        }