public async Task <ActionResult> UpdateObservationById(ObservationImage observation) { try { if (observation != null) { _userId = User.Claims.First(i => i.Type == "UserId").Value; ApplicationUser _user = _userManager.Users.First(u => u.Id == _userId); var user = await _userManager.FindByIdAsync(_userId); var roles = await _userManager.GetRolesAsync(user); var obsId = observation.ObservationId; Observation obs_tbu = new Observation(); if (roles.Contains("Admin")) { obs_tbu = _obsContext.Observation.FirstOrDefault(o => o.ObservationId == obsId); } else { obs_tbu = _obsContext.Observation.FirstOrDefault(o => o.ObservationId == obsId && o.UserId == _userId); } obs_tbu.ApprovalStateId = observation.ApprovalStateId; obs_tbu.AdviceCount = observation.AdviceCount; obs_tbu.AuthorName = observation.AuthorName; obs_tbu.DiagnosisTypeId = observation.DiagnosisTypeId; obs_tbu.FemaleCount = observation.FemaleCount; obs_tbu.MaleCount = observation.MaleCount; obs_tbu.JuvenileCount = observation.JuvenileCount; obs_tbu.LocalityTypeId = observation.LocalityTypeId; obs_tbu.ObservationComment = observation.ObservationComment; obs_tbu.SizeGroupId = observation.SizeGroupId; obs_tbu.TaxonId = observation.TaxonId; obs_tbu.TaxonName = observation.TaxonName; obs_tbu.EditorComment = observation.EditorComment; obs_tbu.HabitatDate = observation.HabitatDate; obs_tbu.HabitatDateTo = observation.HabitatDateTo; obs_tbu.LastEditDate = DateTime.Now; _obsContext.Update(obs_tbu); _obsContext.SaveChanges(); List <ImageIncoming> imgList_incoming = observation.Images; UpdateObservationImages(imgList_incoming, observation, observation.ApprovalStateId); } _obsContext.SaveChanges(); return(Ok(new { succeeded = true, errors = new string[] { } })); } catch (Exception e) { return(BadRequest(JsonConvert.SerializeObject(e.Message))); } }
/**Helper comparing incoming images to those saved in DB **/ private void UpdateObservationImages(List <ImageIncoming> imgList_incoming, ObservationImage observation, int approvalStateId) { List <Image> imgList_existing = _obsContext.Image.Where(img => img.ObservationId == observation.ObservationId).ToList(); foreach (ImageIncoming img in imgList_incoming) { if (img.ToBeDeleted == true) { Image img_tbd = _obsContext.Image.FirstOrDefault(i => i.ImageId == img.ImageId); img_tbd.IsApproved = false; img_tbd.CmsId = null; img_tbd.ObservationId = null; img_tbd.Description += $@"; entfernt von ObservationId = {observation.ObservationId} nach Bearbeitung am { DateTime.Now.ToString("yyyy-MM-dd")} durch User = {_userId}"; _obsContext.Image.Update(img_tbd); _obsContext.SaveChanges(); } //Update Image else if (img.ImageId != 0) { Image img_tbu = _obsContext.Image.FirstOrDefault(i => i.ImageId == img.ImageId); img_tbu.Description = observation.ObservationComment; img_tbu.Author = observation.AuthorName; img_tbu.CopyrightText = img.CopyrightText; img_tbu.TaxonName = observation.TaxonName; img_tbu.TaxonId = observation.TaxonId; img.IsApproved = positiveApprovalStates.Contains(approvalStateId) ? true : false; _obsContext.Image.Update(img_tbu); _obsContext.SaveChanges(); } //Add New Image else { Image new_img = new Image(); new_img.ImagePath = "user_uploads/" + img.ImagePath; new_img.CmsId = img.CmsId; new_img.ObservationId = observation.ObservationId; new_img.LicenseId = 1; new_img.Description = observation.ObservationComment; new_img.UserId = _userId; new_img.Author = observation.AuthorName; new_img.TaxonId = observation.TaxonId; new_img.TaxonName = observation.TaxonName; _obsContext.Add(new_img); _obsContext.SaveChanges(); } _obsContext.SaveChanges(); } }
//POST : /api/Advice/Observation/Update public async Task <ActionResult> UpdateObservation(ObservationImage requestData) { try { _userId = User.Claims.First(i => i.Type == "UserId").Value; ApplicationUser _user = _userManager.Users.First(u => u.Id == _userId); var roles = await _userManager.GetRolesAsync(_user); var obsId = requestData.ObservationId; if (obsId > 0) { Observation oldObs = new Observation(); if (!roles.Contains("Admin")) { oldObs = _obsContext.Observation.FirstOrDefault(obs => obs.ObservationId == obsId && obs.UserId == _userId); } else { oldObs = _obsContext.Observation.FirstOrDefault(obs => obs.ObservationId == obsId); } oldObs.AdviceCount = requestData.AdviceCount; oldObs.MaleCount = requestData.MaleCount; oldObs.FemaleCount = requestData.FemaleCount; oldObs.JuvenileCount = requestData.JuvenileCount; oldObs.LocalityTypeId = requestData.LocalityTypeId; oldObs.ObservationComment = requestData.ObservationComment; oldObs.DiagnosisTypeId = requestData.DiagnosisTypeId; //disabled due to kendo bug with date - 1 day //oldObs.HabitatDate = requestData.HabitatDate; oldObs.TaxonId = requestData.TaxonId; oldObs.SizeGroupId = requestData.SizeGroupId; oldObs.ApprovalStateId = requestData.ApprovalStateId; if (requestData.AuthorName != null) { Event oldEvent = _obsContext.Event.FirstOrDefault(ev => ev.EventId == oldObs.EventId); if (oldEvent != null) { oldEvent.AuthorName = requestData.AuthorName; _obsContext.Update(oldEvent); } } _obsContext.Update(oldObs); //also update images' taxonId List <Image> images = _obsContext.Image.Where(img => img.ObservationId == obsId).ToList(); images.ForEach(imgItem => imgItem.TaxonId = requestData.TaxonId ); _obsContext.UpdateRange(images); _obsContext.SaveChanges(); return(Ok(JsonConvert.SerializeObject(true))); } ; } catch (System.Exception e) { return(Ok(JsonConvert.SerializeObject(e.InnerException))); } return(null); }