private ValidationDictionary <ViewModelNewsCategory> SaveNewsCategory(int clientId, ViewModelNewsCategory viewModelNewsCategory) { var validator = new ValidationDictionary <ViewModelNewsCategory>(); if (viewModelNewsCategory == null) { validator.IsValid = false; validator.AddError("", "The XX you're trying to save is null"); return(validator); } // rule based here var existingWithSameName = _newsCategoryRepository .FilterBy(o => o.NewsCategoryName.ToLower() == viewModelNewsCategory.NewsCategoryName.ToLower() && o.ClientId == clientId && !o.IsDeleted) .ToList(); if (existingWithSameName.Any()) { var haveSameId = viewModelNewsCategory.NewsCategoryId <= 0 || (viewModelNewsCategory.NewsCategoryId > 0 && existingWithSameName.Any(o => o.NewsCategoryId != viewModelNewsCategory.NewsCategoryId)); if (haveSameId) { validator.IsValid = false; validator.AddError("", "News Category with same name is already existed"); return(validator); } } NewsCategory newsCategory; if (viewModelNewsCategory.NewsCategoryId > 0) { newsCategory = _newsCategoryRepository.FindBy(o => o.NewsCategoryId == viewModelNewsCategory.NewsCategoryId); var dateCreated = newsCategory.DateCreated; newsCategory.InjectFrom(viewModelNewsCategory); newsCategory.ClientId = clientId; newsCategory.DateLastUpdated = DateTime.UtcNow; newsCategory.DateCreated = dateCreated; _newsCategoryRepository.Update(newsCategory); } else { newsCategory = new NewsCategory(); newsCategory.InjectFrom(viewModelNewsCategory); newsCategory.DateCreated = DateTime.UtcNow; newsCategory.DateLastUpdated = DateTime.UtcNow; newsCategory.ClientId = clientId; _newsCategoryRepository.Add(newsCategory); } var rawPinged = _newsCategoryRepository.FindBy(o => o.NewsCategoryId == newsCategory.NewsCategoryId && o.ClientId == clientId); var pinged = new ViewModelNewsCategory().InjectFrom(rawPinged) as ViewModelNewsCategory; validator.IsValid = true; validator.RelatedObject = pinged; return(validator); }
private void EditCategoryForNews(AddNewsModel newsModel) { var selectedNewsCategory = _newsCategoryRepository.GetAll().Where(c => c.NewsId == newsModel.Id).ToList(); foreach (var item in selectedNewsCategory) { _newsCategoryRepository.Delete(item); } if (newsModel.SelectedCategory != null) { foreach (var item in newsModel.SelectedCategory) { _newsCategoryRepository.Add(new NewsCategory { NewsId = newsModel.Id, CategoryId = item }); } } }