示例#1
0
        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 }));
        }
示例#2
0
        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));
        }
示例#3
0
        // 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));
        }
示例#4
0
        // 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));
        }