public ValidationDictionary <ViewModelPage> SavePage(int clientId, ViewModelPage viewModelPage) { // validation first var validator = new ValidationDictionary <ViewModelPage>(); if (viewModelPage == null) { validator.IsValid = false; validator.AddError("", "Page you're trying to save is null"); return(validator); } // rule based if (viewModelPage.IsHomePage) { } DynamicPage dPage; if (viewModelPage.PageId <= 0) { // prepare object to save dPage = new DynamicPage(); dPage.InjectFrom(viewModelPage); dPage.ClientId = clientId; dPage.DateCreated = DateTime.UtcNow; dPage.DateLastUpdated = DateTime.UtcNow; _pageRepository.Add(dPage); } else { var gExpression = _dynamicPageFilters.Init() .GetByPageId(viewModelPage.PageId) .GetByClientId(clientId) .GetNotDeleted() .FilterExpression; dPage = _pageRepository.FindBy(gExpression); if (dPage != null) { // excluded fields var createdDate = dPage.DateCreated; // update data dPage.InjectFrom(viewModelPage); dPage.DateCreated = createdDate; dPage.DateLastUpdated = DateTime.UtcNow; dPage.IsDeleted = false; _pageRepository.Update(dPage); } } var pingedPaged = GetPage(clientId, dPage.PageId); validator.IsValid = true; validator.RelatedObject = pingedPaged; return(validator); }