Esempio n. 1
0
        public IActionResult Put(int id, [FromBody] NewsViewModel news)
        {
            try
            {
                var username = HttpContext.User.GetUsername();
                var isAdmin  = HttpContext.User.IsAdmin();

                var contextEntity = _intranetApiContext.News
                                    .Include(n => n.User)
                                    .SingleOrDefault(n => n.Id == id);

                if (contextEntity == null)
                {
                    news.Id = id;
                    return(NotFound(news));
                }

                if (contextEntity.UserId?.Equals(username) != true && !isAdmin)
                {
                    return(Forbid());
                }

                // If the news changes to Published for the first time, set creation date
                if (!contextEntity.HasEverBeenPublished && news.Published)
                {
                    contextEntity.Created = _dateTimeFactory.DateTimeOffsetUtc;
                }
                else if (news.Published)
                {
                    contextEntity.Updated = _dateTimeFactory.DateTimeOffsetUtc;
                }

                contextEntity.Title     = news.Title;
                contextEntity.Text      = news.Text;
                contextEntity.Published = news.Published;

                if (contextEntity.HeaderImage != null)
                {
                    contextEntity.HeaderImage.FileName = news.HeaderImage?.FileName;
                }

                NewsKeywordHelper.SetKeywords(news.Keywords, contextEntity, _intranetApiContext);

                _intranetApiContext.SaveChanges();

                var newsViewModel = new NewsViewModel(contextEntity);

                return(Ok(newsViewModel));
            }
            catch (Exception)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError));
            }
        }
Esempio n. 2
0
        public IActionResult Post([FromBody] NewsViewModel news)
        {
            try
            {
                var username    = HttpContext.User.GetUsername();
                var displayName = HttpContext.User.GetDisplayName();

                if (_intranetApiContext.Users.Find(username) == null)
                {
                    var user = new User
                    {
                        Username    = username,
                        DisplayName = displayName,
                    };

                    _intranetApiContext.Users.Add(user);
                }

                var newNews = new News
                {
                    Title     = news.Title,
                    Text      = news.Text,
                    UserId    = username,
                    Published = news.Published,
                };

                if (!String.IsNullOrWhiteSpace(news.HeaderImage?.FileName))
                {
                    newNews.HeaderImage = new Image
                    {
                        FileName = news.HeaderImage.FileName
                    };
                }

                newNews.Created = _dateTimeFactory.DateTimeOffsetUtc;

                NewsKeywordHelper.SetKeywords(news.Keywords, newNews, _intranetApiContext);

                _intranetApiContext.News.Add(newNews);
                _intranetApiContext.SaveChanges();

                var newsViewModel = new NewsViewModel(newNews);

                return(Ok(newsViewModel));
            }
            catch (Exception)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError));
            }
        }