示例#1
0
        public RequestResult UpdateDictionary(DictionaryViewModel newDictionary)
        {
            if (newDictionary.DictionaryItems.Any(p => string.IsNullOrEmpty(p.Name)))
                return new RequestResult(1, "Невозможно сохранить пустой термин");

            //проверяем уникальность
            if (newDictionary.DictionaryItems.Select(p => p.Name.ToLower().Replace(" ", "")).Distinct().Count() != newDictionary.DictionaryItems.Count)
                return new RequestResult(1, "Значения в справочниках должны быть уникальны");

            //проверка на то что справочник используется в системе (придумать крутую)

            var databaseDictionaries = DataProvider.Dictionaries.Filter(p => p.DictionaryTypeId == newDictionary.Id).ToArray();

            var oldItems = databaseDictionaries.Where(p => !newDictionary.DictionaryItems.Select(c => c.Id).Contains(p.Id));

            #region    удаляем старые термины
            foreach (var olditem in oldItems)
            {
                DataProvider.Dictionaries.Delete(olditem);
            }
            try
            {
                DataProvider.Save();
            }
            catch (Exception)
            {
                return new RequestResult(1, "Ошибка удаления стрых терминов в справочнике");
            }
            #endregion

            #region обновляем и добавляем новые
            foreach (var itemForUpdate in newDictionary.DictionaryItems)
            {
                Dictionary dbDictionaryItem = databaseDictionaries.FirstOrDefault(p => p.Id == itemForUpdate.Id) ?? new Dictionary();
                dbDictionaryItem.Name = itemForUpdate.Name;
                dbDictionaryItem.DictionaryTypeId = newDictionary.Id;
                if (itemForUpdate.Id == 0)
                    DataProvider.Dictionaries.Add(dbDictionaryItem);
            }
            try
            {
                DataProvider.Save();
            }
            catch (Exception)
            {
                return new RequestResult(1, "Ошибка обновления терминов в справочнике");
            }
            finally
            {
                ServiceCache.Remove(DictionaryCacheKey);
            }
            #endregion

            return RequestResult.Ok;
        }
示例#2
0
 public static DictionaryViewModel ToDictionaryViewModel(DictionaryType item)
 {
     var dictionary = new DictionaryViewModel
     {
         Id = item.Id,
         Name = item.Name,
         IsSystem = item.IsSystem,
         DictionaryItems = item.Dictionary.Select(p => new DictionaryItemViewModel
         {
             Id = p.Id,
             DictionaryType = p.DictionaryTypeId,
             Name = p.Name
         }).ToList()
     };
     return dictionary;
 }
 public static DictionaryMetaViewModel ToDictionaryViewModel(DictionaryViewModel item)
 {
     var dictionary = new DictionaryMetaViewModel(item.Id, item.Name);
     return dictionary;
 }
示例#4
0
 public ActionResult Save(DictionaryViewModel dictionary)
 {
     var rs = Request.IsAjaxRequest();
     var updateResult = _dictionaryService.UpdateDictionary(dictionary);
     return Json(updateResult.Equals(RequestResult.Ok) ? new { type = "success", message = "Справочник успешно сохранен" } : new { type = "error", message = updateResult.RequestMessage });
 }