예제 #1
0
        public ActionResult Edit(EditConceptSetModel model)
        {
            try
            {
                var conceptSet = this.GetConceptSet(model.Id);

                if (conceptSet == null)
                {
                    TempData["error"] = Locale.ConceptSetNotFound;

                    return(RedirectToAction("Index"));
                }

                //check oid
                if (!conceptSet.Oid.Equals(model.Oid))
                {
                    var exists = this.ImsiClient.Query <ConceptSet>(c => c.Oid == model.Oid).Item.OfType <ConceptSet>().Any();

                    if (exists)
                    {
                        ModelState.AddModelError("Oid", Locale.OidMustBeUnique);
                    }
                }

                //check mnemonic
                if (!string.Equals(conceptSet.Mnemonic, model.Mnemonic))
                {
                    var duplicate = DoesConceptSetExist(model.Mnemonic);
                    if (duplicate)
                    {
                        ModelState.AddModelError("Mnemonic", Locale.MnemonicMustBeUnique);
                    }
                }

                if (ModelState.IsValid)
                {
                    conceptSet = model.ToConceptSet(conceptSet);

                    var result = this.ImsiClient.Update <ConceptSet>(conceptSet);

                    TempData["success"] = Locale.ConceptSetUpdatedSuccessfully;

                    return(RedirectToAction("ViewConceptSet", new { id = result.Key }));
                }
            }
            catch (Exception e)
            {
                Trace.TraceError($"Unable to update concept set: {e}");
                this.TempData["error"] = Locale.UnableToUpdateConceptSet;
            }

            TempData["error"] = Locale.UnableToUpdateConceptSet;
            return(View(model));
        }
예제 #2
0
        public ActionResult Edit(Guid id)
        {
            try
            {
                var conceptSet = this.GetConceptSet(id);

                if (conceptSet == null)
                {
                    this.TempData["error"] = Locale.ConceptSetNotFound;
                    return(RedirectToAction("Index"));
                }

                var concepts = conceptSet.ConceptsXml.Select(c => this.GetConcept(c, null)).Where(concept => concept != null).ToList();

                foreach (var concept in concepts)
                {
                    if (concept.Class == null && concept.ClassKey.HasValue && concept.ClassKey.Value != Guid.Empty)
                    {
                        concept.Class = this.GetConceptClass(concept.ClassKey.Value);
                    }
                }

                var model = new EditConceptSetModel(conceptSet)
                {
                    Concepts = concepts.Select(c => new ConceptViewModel(c, id)).ToList()
                };

                return(View(model));
            }
            catch (Exception e)
            {
                Trace.TraceError($"Unable to retrieve concept set: {e}");
                this.TempData["error"] = Locale.UnexpectedErrorMessage;
            }

            return(RedirectToAction("ViewConceptSet", new { id = id }));
        }