Exemple #1
0
        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)));
            }
        }
Exemple #2
0
        /**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();
            }
        }
Exemple #3
0
        //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);
        }