public List <ObservationFilterViewModel> GetAllMeasurementsFromPerson(Person person)
        {
            List <ObservationFilterViewModel> observationsList = new List <ObservationFilterViewModel>();

            foreach (var observation in dbContext.Observations)
            {
                if (observation.Person == person)
                {
                    ObservationFilterViewModel model = new ObservationFilterViewModel();

                    var newObservation = dbContext.Observations.Where(o => o.Id.Equals(observation.Id))
                                         .Include(m => m.MainCategory)
                                         .Include(p => p.Person)
                                         .FirstOrDefault();
                    var measurementsList = dbContext.Measurements.Where(m => m.observationId.Equals(observation.Id))
                                           .Include(y => y.ThirdCategory)
                                           .ToList();

                    model.Observation  = newObservation;
                    model.Measurements = measurementsList;
                    model.Category     = dbContext.Categories.Where(c => c.Id.Equals(measurementsList[0].categoryId)).FirstOrDefault();
                    model.Measurement  = dbContext.Measurements.Where(m => m.Id.Equals(measurementsList[0].Id)).FirstOrDefault();

                    if (model.Measurements[0].ThirdCategory == null)
                    {
                        //Tomt objekt för att slippa få "null reference"
                        model.Measurements[0].ThirdCategory = new ThirdCategory();
                    }

                    observationsList.Add(model);
                }
            }
            return(observationsList);
        }
        public ObservationFilterViewModel GetObservationWithMeasurement(int id)
        {
            var model = new ObservationFilterViewModel();

            var newObservation = dbContext.Observations.Where(o => o.Id.Equals(id))
                                 .Include(m => m.MainCategory)
                                 .Include(p => p.Person)
                                 .FirstOrDefault();
            var measurementsList = dbContext.Measurements.Where(m => m.observationId.Equals(id))
                                   .Include(y => y.ThirdCategory)
                                   .ToList();

            model.Observation  = newObservation;
            model.Measurements = measurementsList;
            model.Category     = dbContext.Categories.Where(c => c.Id.Equals(measurementsList[0].categoryId)).FirstOrDefault();
            model.Measurement  = dbContext.Measurements.Where(m => m.Id.Equals(measurementsList[0].Id)).FirstOrDefault();

            if (model.Measurements[0].ThirdCategory == null)
            {
                //Tomt objekt för att slippa få "null reference"
                model.Measurements[0].ThirdCategory = new ThirdCategory();
            }

            return(model);
        }
        public async Task <IActionResult> PostEditUserObservation(ObservationFilterViewModel model, int measurmentValue, int measurmentId) //Measurement model
        {
            string fileName = null;

            if (model.CreateMeasurementViewModel.Photo != null)
            {
                string uploadsFolder = Path.Combine(hostingenv.WebRootPath, "pictures");
                fileName = Guid.NewGuid().ToString() + "_" + model.CreateMeasurementViewModel.Photo.FileName;
                string filePath = Path.Combine(uploadsFolder, fileName);
                model.CreateMeasurementViewModel.Photo.CopyTo(new FileStream(filePath, FileMode.Create));
                observationdb.UpdateMeasurementPhoto(measurmentId, fileName);
            }

            observationdb.UpdateObservation(model.Observation);

            if (!measurmentValue.Equals(0) && !measurmentId.Equals(0))
            {
                observationdb.UpdateMeasurmentValue(measurmentId, measurmentValue.ToString());
            }
            var user = await GetCurrentUserAsync();

            string userId = user?.Id;
            var    person = db.GetPersonFromObservationId(model.Observation.Id);

            if (person.IdentityId == userId)
            {
                return(RedirectToAction("UserProfile"));
            }
            else
            {
                return(RedirectToAction("EditUser", "Admin", new { id = person.IdentityId }));
            }
        }