Exemple #1
0
        public async Task <IActionResult> Edit(int?id, string name)
        {
            using var db = AppContextFactory.DB;

            OntologyEditViewModel model = new OntologyEditViewModel();

            await TryUpdateModelAsync <OntologyEditViewModel>(model, "", i => i.FacetId, i => i.ElementName);

            if (db.FacetItems.Any(i => i.FacetId == model.FacetId && i.Name == model.ElementName))
            {
                ModelState.AddModelError("Error", "Такой элемент уже есть!");
            }

            if (!ModelState.IsValid)
            {
                return(View(new OntologyEditViewModel()
                {
                    ElementName = model.ElementName,
                    Facets = (from f in db.Facets
                              select new SelectListItem()
                    {
                        Text = f.Name,
                        Value = f.Id.ToString(),
                        Selected = model.FacetId == f.Id
                    }).ToList()
                }));
            }

            using var t = db.Database.BeginTransaction();

            try
            {
                FacetItem fi = new FacetItem();

                if (id.HasValue)
                {
                    fi = db.FacetItems.FirstOrDefault(i => i.Id == id.Value) ?? new FacetItem();
                }

                fi.FacetId = model.FacetId;
                fi.Name    = model.ElementName;

                if (fi.Id == 0)
                {
                    db.Entry(fi).State = Microsoft.EntityFrameworkCore.EntityState.Added;
                }

                await db.SaveChangesAsync();

                await t.CommitAsync();
            }
            catch (Exception ex)
            {
                await t.RollbackAsync();

                ModelState.AddModelError("Error", "В процессе сохранения произошла ошибка! Ошибка: " + ex.Message);
            }

            return(RedirectToAction("Index"));
        }
Exemple #2
0
        public IActionResult Edit(int?id)
        {
            using var db = AppContextFactory.DB;

            OntologyEditViewModel model = new OntologyEditViewModel()
            {
                Facets = new List <SelectListItem>()
            };

            model.Facets.Add(new SelectListItem()
            {
                Selected = true, Text = "[ Выберите класс ]"
            });
            model.Facets.AddRange(from f in db.Facets
                                  where new string[] { "skills", "subjects" }.Contains(f.Code)
                                  select new SelectListItem()
            {
                Text  = f.Name,
                Value = f.Id.ToString()
            });


            FacetItem fi = new FacetItem();

            if (id.HasValue)
            {
                fi = db.FacetItems.FirstOrDefault(i => i.Id == id) ?? new FacetItem();
            }

            if (fi.Id != 0)
            {
                model.Facets.FirstOrDefault(i => i.Value == fi.FacetId.ToString()).Selected = true;
                model.FacetId     = fi.FacetId;
                model.ElementName = fi.Name;
            }

            return(View(model));
        }