public async Task <IActionResult> Edit(int id, SegmentArticleViewModel sa) { if (id != sa.ID) { return(NotFound()); } _user = _context.User.FirstOrDefault(p => p.EmailAddress == _userManager.GetUserAsync(User).GetAwaiter().GetResult().Email); _cpy = _context.Company.FirstOrDefaultAsync(m => m.ID == _user.CompanyID).GetAwaiter().GetResult(); var myArticle = _context.SegmentArticle.Find(id); //Have to check the article title isn't already used var existingArticle = _context.SegmentArticle.FirstOrDefault(n => n.Title == sa.Title && n.CompanyID == sa.CompanyID); if (existingArticle == null) { if (ModelState.IsValid) { myArticle.ID = sa.ID; myArticle.CompanyID = _user.CompanyID; myArticle.Order = sa.Order ?? 1; myArticle.Title = WebUtility.HtmlEncode(sa.Title); myArticle.PublishFrom = sa.PublishFrom ?? DateTime.Now.AddDays(-1); myArticle.PublishTill = sa.PublishTill ?? DateTime.Now.AddYears(10); myArticle.AllowComments = sa.AllowComments; myArticle.ArticleContent = WebUtility.HtmlEncode(sa.ArticleContent); myArticle.Author = sa.Author; myArticle.Tags = WebUtility.HtmlEncode(sa.Tags); myArticle.ArticleUrl = WebUtility.HtmlEncode(sa.ArticleUrl); myArticle.Languages = string.Join("|", sa.SelectedLanguages); myArticle.Groups = string.Join("|", sa.SelectedGroups); myArticle.Topics = string.Join("|", sa.SelectedTopics); myArticle.TypeOfUser = string.Join("|", sa.SelectedTypeOfUser); myArticle.City = sa.City; if (sa.Country != null && sa.Country != "") { myArticle.Country = _context.LocationCountries.FirstOrDefault(m => m.country_code == sa.Country).country_name; } if (sa.State != null && sa.State != "") { myArticle.State = _context.LocationStates.FirstOrDefault(n => n.country_code == sa.Country && n.state_code == sa.State).state_name; } IFormFile img = sa.Image; if (img != null) { await _dla.UploadFileToS3(img, _user.CompanyName + "_" + id + "_" + img.FileName, "images/Uploads/Articles"); //The file has been saved to disk - now save the file name to the DB myArticle.Image = img.FileName; } IFormFile vid = sa.EmbeddedVideo; if (vid != null) { await _dla.UploadFileToS3(vid, _user.CompanyName + "_" + id + "_" + vid.FileName, "images/Uploads/Articles"); //The file has been saved to disk - now save the file name to the DB myArticle.EmbeddedVideo = vid.FileName; } else { myArticle.EmbeddedVideo = ""; } try { // If the article has some segments set if (!string.IsNullOrEmpty(myArticle.Segments)) { var oldSegments = myArticle.Segments.Split("|"); //Even though it is an edit we are resetting the order to 1...its waaay to complicated otherwise. myArticle.Segments = CreateSegmentsStringWithOrder1ButWithCheckToMakeSureNotAt1Already(sa.SelectedSegments, oldSegments); } else //no existing segments { myArticle.Segments = CreateSegmentsStringWithOrder1ButWithCheckToMakeSureNotAt1Already(sa.SelectedSegments, null); } _context.Update(myArticle); await _context.SaveChangesAsync(); //update the selected article segments //DataAccessLayer dla = new DataAccessLayer(_context, _user.companyID); } catch (DbUpdateConcurrencyException) { if (!SegmentArticleExists(myArticle.ID)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } else { // Article title already exists ModelState.AddModelError(string.Empty, "Article Title already exists - please choose something unique"); } } return(RedirectToAction("Edit", new { id = myArticle.ID })); }
public async Task <IActionResult> Create(SegmentArticleViewModel sa) { var myArticle = new SegmentArticle(); _user = _context.User.FirstOrDefault(p => p.EmailAddress == _userManager.GetUserAsync(User).GetAwaiter().GetResult().Email); _cpy = _context.Company.FirstOrDefaultAsync(m => m.ID == _user.CompanyID).GetAwaiter().GetResult(); //Have to check the article title isn't already used var existingArticle = _context.SegmentArticle.FirstOrDefault(n => n.Title == sa.Title && n.CompanyID == sa.CompanyID); if (existingArticle == null) { if (ModelState.IsValid) { //ID,Order,Title,CoverImage,CoverImageMobileFriendly,PublishDate,FinishDate,ClientName,ClientLogoImage,ThemeColor,StandardColor,Draft,Department,Tags myArticle.CompanyID = _user.CompanyID; myArticle.Title = WebUtility.HtmlEncode(sa.Title); myArticle.PublishFrom = sa.PublishFrom ?? DateTime.Now.AddDays(-1); myArticle.PublishTill = sa.PublishTill ?? DateTime.Now.AddYears(10); myArticle.AllowComments = sa.AllowComments; myArticle.ArticleContent = WebUtility.HtmlEncode(sa.ArticleContent); myArticle.Author = (sa.Author ?? _user.Name); //if null set to be user name myArticle.CreatedBy = _user.Name; myArticle.ArticleUrl = WebUtility.HtmlEncode(sa.ArticleUrl); myArticle.Order = 1; myArticle.Tags = WebUtility.HtmlEncode(sa.Tags); myArticle.Languages = string.Join("|", sa.SelectedLanguages); myArticle.Groups = string.Join("|", sa.SelectedGroups); myArticle.Topics = string.Join("|", sa.SelectedTopics); myArticle.TypeOfUser = string.Join("|", sa.SelectedTypeOfUser); if (sa.Country != null && sa.Country != "") { myArticle.Country = _context.LocationCountries.FirstOrDefault(m => m.country_code == sa.Country).country_name; } if (sa.State != null && sa.State != "") { myArticle.State = _context.LocationStates.FirstOrDefault(n => n.country_code == sa.Country && n.state_code == sa.State).state_name; } myArticle.City = sa.City; //Now we need to get what the article ID will be as it isn't normally generated till created. int artID = _context.SegmentArticle.OrderByDescending(u => u.ID).FirstOrDefault().ID + 1; IFormFile img = sa.Image; if (img != null) { await _dla.UploadFileToS3(img, _user.CompanyName + "_" + artID + "_" + img.FileName, "images/Uploads/Articles"); //The file has been saved to disk - now save the file name to the DB myArticle.Image = img.FileName; } IFormFile vid = sa.EmbeddedVideo; if (vid != null) { await _dla.UploadFileToS3(vid, _user.CompanyName + "_" + artID + "_" + vid.FileName, "images/Uploads/Articles"); //The file has been saved to disk - now save the file name to the DB myArticle.EmbeddedVideo = vid.FileName; } // As they want order to be associated with segment now im having to smush it in with the current field....a bit ugly if (sa.SelectedSegments.Count > 0) { myArticle.Segments = CreateSegmentsStringWithOrder1(sa.SelectedSegments); } _context.Add(myArticle); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } } else { // Article title already exists ModelState.AddModelError(string.Empty, "Article Title already exists - please choose something unique"); } DataAccessLayer dla = new DataAccessLayer(_context); var listOfAllSegements = dla.GetArticleSegments(_user.CompanyID); foreach (var seg in listOfAllSegements) { sa.AvailableSegments.Add(new SelectListItem { Text = seg.Value, Value = seg.Value }); } // Add group checkboxes var listOfAllGroups = dla.GetListGroups(_user.CompanyID); foreach (var seg in listOfAllGroups) { sa.AvailableGroups.Add(new SelectListItem { Text = seg.Value, Value = seg.Value }); } // Add topic checkboxes var listOfAllTopics = dla.GetListTopics(_user.CompanyID); foreach (var seg in listOfAllTopics) { sa.AvailableTopics.Add(new SelectListItem { Text = seg.Value, Value = seg.Value }); } // Add type checkboxes var listOfAllTypeOfUser = dla.GetListTypeOfUser(_user.CompanyID); foreach (var seg in listOfAllTypeOfUser) { sa.AvailableTypeOfUser.Add(new SelectListItem { Text = seg.Value, Value = seg.Value }); } // Add language checkboxes var listOfAllLanguages = dla.GetListLanguages(_user.CompanyID, _rlo); foreach (var seg in listOfAllLanguages) { sa.AvailableLanguages.Add(new SelectListItem { Text = seg.Value, Value = seg.Value }); } // Get location dropdown data sa.Countries = dla.GetCountries(); sa.States = dla.GetNullStatesOrCities(); sa.Cities = dla.GetNullStatesOrCities(); return(View(sa)); }
// GET: SegmentArticles/Edit/5 public async Task <IActionResult> Edit(int?id) { if (id == null) { return(NotFound()); } _user = _context.User.FirstOrDefault(p => p.EmailAddress == _userManager.GetUserAsync(User).GetAwaiter().GetResult().Email); _cpy = _context.Company.FirstOrDefaultAsync(m => m.ID == _user.CompanyID).GetAwaiter().GetResult(); var segmentArticle = await _context.SegmentArticle.FindAsync(id); if (segmentArticle == null) { return(NotFound()); } DataAccessLayer dla = new DataAccessLayer(_context); SegmentArticleViewModel s = new SegmentArticleViewModel(); s.Order = segmentArticle.Order; s.ArticleUrl = WebUtility.HtmlDecode(segmentArticle.ArticleUrl); s.Title = WebUtility.HtmlDecode(segmentArticle.Title); //s.Image = segmentArticle.Image; TODO still need to fix this crap //s.EmbeddedVideo = segmentArticle.EmbeddedVideo; s.ArticleContent = WebUtility.HtmlDecode(segmentArticle.ArticleContent); s.PublishFrom = segmentArticle.PublishFrom; s.PublishTill = segmentArticle.PublishTill; s.CompanyID = segmentArticle.CompanyID; s.Author = (segmentArticle.Author == null || segmentArticle.Author == "" ? _user.Name : segmentArticle.Author); s.AllowComments = segmentArticle.AllowComments; s.Tags = WebUtility.HtmlDecode(segmentArticle.Tags); s.CreatedBy = _user.Name; // Get location dropdown data s.Countries = dla.GetCountries(); s.States = dla.GetNullStatesOrCities(); s.Cities = dla.GetNullStatesOrCities(); if (segmentArticle.Segments != null && segmentArticle.Segments != "") { s.AvailableSegments = RemoveDigitsAndSlashes(segmentArticle.Segments).Split('|').Select(x => new SelectListItem { Text = x, Value = x, Selected = true }).ToList(); } //Add any options not already in the segmentlist string deptID = _user.Categories; List <SelectListItem> listOfAllSegements; if (!string.IsNullOrEmpty(deptID)) { listOfAllSegements = dla.GetArticleSegments(_user.CompanyID, deptID); } else { listOfAllSegements = dla.GetArticleSegments(_user.CompanyID); } foreach (var seg in listOfAllSegements) { var match = s.AvailableSegments.FirstOrDefault(stringToCheck => stringToCheck.Value.Contains(seg.Value)); if (match == null) { //if no match (not in the list) then add it s.AvailableSegments.Add(new SelectListItem { Text = seg.Value, Value = seg.Value }); } } if (segmentArticle.Groups != null && segmentArticle.Groups != "") { s.AvailableGroups = segmentArticle.Groups.Split('|').Select(x => new SelectListItem { Text = x, Value = x, Selected = true }).ToList(); } //Add any options not already in the segmentlist var listOfAllGroups = dla.GetListGroups(_user.CompanyID); foreach (var seg in listOfAllGroups) { if (s.AvailableGroups.FirstOrDefault(stringToCheck => stringToCheck.Value.Contains(seg.Value)) == null) { //if no match (not in the list) then add it s.AvailableGroups.Add(new SelectListItem { Text = seg.Value, Value = seg.Value }); } } if (segmentArticle.Topics != null && segmentArticle.Topics != "") { s.AvailableTopics = segmentArticle.Topics.Split('|').Select(x => new SelectListItem { Text = x, Value = x, Selected = true }).ToList(); } //Add any options not already in the segmentlist var listOfAllTopics = dla.GetListTopics(_user.CompanyID); foreach (var seg in listOfAllTopics) { if (s.AvailableTopics.FirstOrDefault(stringToCheck => stringToCheck.Value.Contains(seg.Value)) == null) { //if no match (not in the list) then add it s.AvailableTopics.Add(new SelectListItem { Text = seg.Value, Value = seg.Value }); } } if (segmentArticle.TypeOfUser != null && segmentArticle.TypeOfUser != "") { s.AvailableTypeOfUser = segmentArticle.TypeOfUser.Split('|').Select(x => new SelectListItem { Text = x, Value = x, Selected = true }).ToList(); } //Add any options not already in the segmentlist var listOfAllTypeOfUser = dla.GetListTypeOfUser(_user.CompanyID); foreach (var seg in listOfAllTypeOfUser) { if (s.AvailableTypeOfUser.FirstOrDefault(stringToCheck => stringToCheck.Value.Contains(seg.Value)) == null) { //if no match (not in the list) then add it s.AvailableTypeOfUser.Add(new SelectListItem { Text = seg.Value, Value = seg.Value }); } } if (segmentArticle.Languages != null && segmentArticle.Languages != "") { s.AvailableLanguages = segmentArticle.Languages.Split('|').Select(x => new SelectListItem { Text = x, Value = x, Selected = true }).ToList(); } //Add any options not already in the segmentlist var listOfAllLanguages = dla.GetListLanguages(_user.CompanyID, _rlo); foreach (var seg in listOfAllLanguages) { if (s.AvailableLanguages.FirstOrDefault(stringToCheck => stringToCheck.Value.Contains(seg.Value)) == null) { //if no match (not in the list) then add it s.AvailableLanguages.Add(new SelectListItem { Text = seg.Value, Value = seg.Value }); } } return(View(s)); }
// GET: SegmentArticles/Create public IActionResult Create() { _user = _context.User.FirstOrDefault(p => p.EmailAddress == _userManager.GetUserAsync(User).GetAwaiter().GetResult().Email); _cpy = _context.Company.FirstOrDefaultAsync(m => m.ID == _user.CompanyID).GetAwaiter().GetResult(); SegmentArticleViewModel s = new SegmentArticleViewModel(); s.Order = 1; s.PublishFrom = DateTime.Now.Date; s.PublishTill = DateTime.Now.AddYears(10).Date; s.CompanyID = _user.CompanyID; s.Author = _user.Name; s.AllowComments = true; DataAccessLayer dla = new DataAccessLayer(_context); string deptID = _user.Categories; List <SelectListItem> listOfAllSegements; if (!string.IsNullOrEmpty(deptID)) { listOfAllSegements = dla.GetArticleSegments(_user.CompanyID, deptID); } else { listOfAllSegements = dla.GetArticleSegments(_user.CompanyID); } foreach (var seg in listOfAllSegements) { s.AvailableSegments.Add(new SelectListItem { Text = seg.Value, Value = seg.Value }); } // Add group checkboxes var listOfAllGroups = dla.GetListGroups(_user.CompanyID); foreach (var seg in listOfAllGroups) { s.AvailableGroups.Add(new SelectListItem { Text = seg.Value, Value = seg.Value }); } // Add topic checkboxes var listOfAllTopics = dla.GetListTopics(_user.CompanyID); foreach (var seg in listOfAllTopics) { s.AvailableTopics.Add(new SelectListItem { Text = seg.Value, Value = seg.Value }); } // Add type checkboxes var listOfAllTypeOfUser = dla.GetListTypeOfUser(_user.CompanyID); foreach (var seg in listOfAllTypeOfUser) { s.AvailableTypeOfUser.Add(new SelectListItem { Text = seg.Value, Value = seg.Value }); } // Add language checkboxes var listOfAllLanguages = dla.GetListLanguages(_user.CompanyID, _rlo); foreach (var seg in listOfAllLanguages) { s.AvailableLanguages.Add(new SelectListItem { Text = seg.Value, Value = seg.Value }); } // Get location dropdown data s.Countries = dla.GetCountries(); s.States = dla.GetNullStatesOrCities(); s.Cities = dla.GetNullStatesOrCities(); return(View(s)); }