예제 #1
0
        public void Update(NewsDTO newsDto)
        {
            var news = _mapper.Map <News>(newsDto);

            _db.News.Update(news);
            _db.Save();
        }
예제 #2
0
        public ActionResult AddNews(NewsVM model)
        {
            if (ModelState.IsValid)
            {
                NewsDTO newNews = new NewsDTO
                {
                    Slug       = model.Headline.Replace(" ", "-").ToLower(),
                    Headline   = model.Headline,
                    Heading    = model.Heading,
                    NewsBody   = model.NewsBody,
                    NewsCaster = User.Identity.GetUserId <int>(),
                    UploadDate = DateTime.UtcNow,
                    TypeId     = model.TypeId
                };

                using (DbContext db = new DbContext())
                {
                    db.News.Add(newNews);
                    db.SaveChanges();
                }

                TempData["SM"] = "News added successfully, awaiting approval.";
                return(RedirectToAction("add-news"));
            }

            // if we get this far, there is an error
            model.NewsTypeList = new SelectList(NewsContext.GetAllNewsType(), "TypeId", "Description");
            return(View("AddNews", model));
        }
예제 #3
0
        public async Task <IActionResult> Edit(NewsDetailsViewModel newsFromView)
        {
            NewsDTO newsDTOToChange = await _newsService.GetByIdAsync(newsFromView.Id, HomeController.cancellationToken);

            if (newsFromView.Id != newsDTOToChange.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    newsDTOToChange.Title        = newsFromView.Title;
                    newsDTOToChange.Body         = newsFromView.Body;
                    newsDTOToChange.SourseURL    = newsFromView.SourseURL;
                    newsDTOToChange.EditedOnDate = DateTime.Now;

                    await _newsService.UpdateAsync(newsDTOToChange);
                }
                catch
                {
                    return(NotFound());
                }
                return(RedirectToAction("Index", "Home"));
            }
            return(View(newsFromView));
        }
예제 #4
0
        public async Task <int> AddNewAsync(NewsDTO newsDTO)
        {
            News news = mapper.Map <News>(newsDTO);

            news.Date = DateTime.Now;
            return(await unitOfWork.NewRepository.AddAsync(news));
        }
        public async Task <NewsDTO> GetNews(CredentialsDTO credentials)
        {
            string  text = GetContentFromEmail(credentials.EmailUsername, credentials.EmailPassword, credentials.EmailSenderFilter);
            NewsDTO news = GetNews(text);

            return(news);
        }
예제 #6
0
        public NewsDTO SaveArticle([FromBody] NewsDTO art)
        {
            News article;

            if (art.Id != 0)
            {
                article = context.News.FirstOrDefault(c => c.Id == art.Id);
            }
            else
            {
                article = new News();
                context.News.Add(article);
                article.CreationDate = DateTime.Now;
            }

            if (article == null)
            {
                return(null);
            }

            article.SiteId  = art.SiteId;
            article.Title   = art.Title;
            article.TitleUa = art.TitleUa;
            article.Text    = art.Text;
            article.TextUa  = art.TextUa;
            article.Image   = art.Image;


            context.SaveChanges();
            art.Id = article.Id;
            return(art);
        }
예제 #7
0
        public void UpdateNews(NewsDTO newsDto)
        {
            News news = _mapper.Map <NewsDTO, News>(newsDto);

            Database.News.Update(news);
            Database.Save();
        }
예제 #8
0
        public News Update(NewsDTO newsDTO, int Id, int userId)
        {
            var news = _context.News.SingleOrDefault(x => x.Id == Id);

            if (news == null)
            {
                throw new AppException("News not found");
            }

            if (news.OwnerId != userId)
            {
                throw new AppException("User is not owner of this news");
            }

            if (news.Status != News.ARCHIVE)
            {
                throw new AppException("Action is not allowed");
            }

            _mapper.Map(newsDTO, news);
            _context.News.Update(news);

            var ids = newsDTO.ImageIds.Split(',').Select(Int32.Parse).ToList();

            foreach (int id in ids)
            {
                var image = _context.Images.SingleOrDefault(x => x.ImageId == id);
                if (image.NewsId == news.Id)
                {
                    continue;
                }
                if (image != null && image.NewsId == 0)
                {
                    image.NewsId = news.Id;
                    _context.Images.Update(image);
                }
            }

            foreach (NewsAttribute newsAttribute in news.NewsAttribute)
            {
                var attr = _context.NewsAttribute.SingleOrDefault(x => x.NewsId == news.Id && x.AttributeId == newsAttribute.AttributeId);
                if (attr == null)
                {
                    newsAttribute.NewsId = news.Id;
                    _context.NewsAttribute.Add(newsAttribute);
                }
                else
                {
                    if (attr.Value != newsAttribute.Value)
                    {
                        attr.Value = newsAttribute.Value;
                        _context.NewsAttribute.Update(attr);
                    }
                }
            }

            _context.SaveChanges();
            news.Images = _context.Images.Where(x => x.NewsId == news.Id).ToList();
            return(news);
        }
예제 #9
0
        public IEnumerable <NewsDTO> GetNewsDTOs()
        {
            var q = from n in db.News
                    join a in db.Accounts on n.AccountId equals a.AccountId
                    select new { n, a };
            List <NewsDTO> news = new List <NewsDTO>();

            foreach (var item in q)
            {
                NewsDTO newsDTO = new NewsDTO
                {
                    NewsId      = item.n.NewsId,
                    Title       = item.n.Title,
                    StartDate   = item.n.StartDate,
                    SortContent = item.n.SortContent,
                    Content     = item.n.Content
                };
                var p = item.n.Imgs.Where(x => x.NewsId == item.n.NewsId).ToList()[0].Picture;
                newsDTO.Picture = new List <string>
                {
                    p
                };
                newsDTO.Fullname = item.a.Fullname;
                news.Add(newsDTO);
            }
            return(news);
        }
예제 #10
0
        public async Task <ActionResult <NewsDTO> > PostNews(NewsDTO newsDTO)
        {
            News news = new News(newsDTO);

            // добавляем неопределенные значения
            news.TimePublication = DateTime.Now;

            var categories = _context.Categories.Include(p => p.News).ToList();
            var comments   = _context.Comments.Include(p => p.CurrNews).ToList();

            foreach (int i in news.CategoriesId)
            {
                var category = categories.Find(p => p.Id == i);
                if (category == null)
                {
                    return(BadRequest("The categories you pointed doesn't exist!"));
                }
                news.Categories.Add(category);
            }
            foreach (int i in news.CommentsId)
            {
                var comment = comments.Find(p => p.Id == i);
                if (comment == null)
                {
                    return(BadRequest("The comments you pointed doesn't exist!"));
                }
                news.Comments.Add(comment);
            }

            _context.News.Add(news);
            await _context.SaveChangesAsync();

            return(CreatedAtAction(nameof(GetNews), new { id = news.Id }, new NewsDTO(news)));
        }
        public async Task <ActionResult <NewsList> > PostNewsItemIntoList(long id, NewsDTO newsItemDTO)
        {
            var newsItemList = await _context.NewsLists.FindAsync(id);

            if (newsItemList == null)
            {
                return(NotFound());
            }
            await _context.Entry(newsItemList).Collection(x => x.NewsItem).LoadAsync();

            var newsItem = new NewsEntity
            {
                Photo    = newsItemDTO.Photo,
                Title    = newsItemDTO.Title,
                Subtitle = newsItemDTO.Subtitle,
                Body     = newsItemDTO.Body
            };

            newsItemList.NewsItem.Add(newsItem);

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException) when(!NewsItemListExists(id))
            {
                return(NotFound());
            }

            return(CreatedAtAction("PostNewsItemIntoList", new { id = newsItem.Id }, NewsController.NewsToDTO(newsItem)));
        }
예제 #12
0
        public DeleteNewsResult Delete(int id)
        {
            try
            {
                if (id <= 0)
                {
                    throw new ArgumentNullException(nameof(id));
                }

                NewsDTO savedNews = NewsManager.GetByID(id);
                if (savedNews == null)
                {
                    throw new Exception("News not found");
                }
                if (savedNews.CreateUser != Guid.Parse(User.FindFirst(c => c.Type == ClaimTypes.NameIdentifier).Value))
                {
                    throw new UnauthorizedAccessException();
                }

                NewsManager.Delete(id);

                ImageExtensions.DeleteImage(GetNewsImagePath(savedNews.IconName));

                return(new DeleteNewsResult());
            }
            catch (Exception ex)
            {
                return(new DeleteNewsResult(ex));
            }
        }
        public ActionResult EditNews(NewsViewModel newsViewModel)
        {
            if (ModelState.IsValid)
            {
                foreach (string file in Request.Files)
                {
                    HttpPostedFileBase hpf = Request.Files[file];

                    if (hpf.ContentLength != 0)
                    {
                        string path = "/Uploads/";
                        if (!Directory.Exists(path))
                        {
                            Directory.CreateDirectory(path);
                        }

                        hpf.SaveAs(Server.MapPath(path) + Path.GetFileName(hpf.FileName));
                        newsViewModel.Img = path + Path.GetFileName(hpf.FileName);
                    }
                }

                NewsDTO newsDto = _mapper.Map <NewsViewModel, NewsDTO>(newsViewModel);
                _newsService.UpdateNews(newsDto);

                return(RedirectToAction("News", "Admin"));
            }
            else
            {
                return(PartialView("_EditNewsFormPartial", newsViewModel));
            }
        }
        public ActionResult EditNews(Guid id)
        {
            NewsDTO newsDto       = _newsService.GetNewsDTOById(id);
            var     newsViewModel = _mapper.Map <NewsDTO, NewsViewModel>(newsDto);

            return(PartialView("_EditNewsFormPartial", newsViewModel));
        }
예제 #15
0
        public News ExpandDTO(NewsDTO newsDTO)
        {
            News news = new News();

            news.LastModified = newsDTO.LastModified;
            news.Content      = newsDTO.Content;
            news.Title        = newsDTO.Title;
            if (newsDTO.BackgroundPicture != null)
            {
                news.BackgroundPicture = ExpandBackgroundPicture(newsDTO.BackgroundPicture);
            }
            foreach (PictureDTO picture in newsDTO.Pictures)
            {
                news.Pictures.Add(ExpandPicture(picture, news));
            }
            foreach (AudioDTO audio in newsDTO.AudioRecordings)
            {
                Audio aud = new Audio();
                aud.BelongsTo   = news;
                aud.Description = audio.Description;
                aud.Name        = audio.Name;
                news.AudioRecordings.Add(aud);
            }
            foreach (CommentDTO comm in newsDTO.Comments)
            {
                Comment comment = new Comment();
                comment.BelongsTo = news;
                comment.Content   = comm.Content;
                comment.PostDate  = comm.PostDate;
                news.Comments.Add(comment);
            }
            return(news);
        }
예제 #16
0
        //This Shit needs testing
        public NewsDTO CreateNews(NewsDTO news, int userId)
        {
            NewsDTO dataResult = newsData.CreateNews(news, userId);

            //if (news.BackgroundPicture != null)
            //{
            //    dataResult.BackgroundPicture.PictureData = news.BackgroundPicture.PictureData;
            //}

            //TODO ovo uopste ne izgleda dobro, ne znam kako bi bolje mogle da se ucitavaju slike

            for (int i = 0; i < news.Pictures.Count; i++)
            {
                PictureDTO dto = dataResult.Pictures[i];
                dto.PictureData = news.Pictures[i].PictureData;
            }

            if (dataResult != null)
            {
                MessageQueueManager manager = MessageQueueManager.Instance;
                manager.PublishMessage(dataResult.Id, dataResult.Id, dataResult, MessageOperation.Insert);
            }

            return(dataResult);
        }
예제 #17
0
        public List <NewsDTO> GetNewsModifiedByUser(int userId)
        {
            List <NewsDTO> news    = new List <NewsDTO>();
            ISession       session = null;

            try
            {
                session = DataLayer.GetSession();
                IEnumerable <NewsModified> retData = from m in session.Query <NewsModified>()
                                                     where m.User.Id == userId
                                                     select m;

                foreach (NewsModified m in retData)
                {
                    if (!news.Exists(x => x.Id == m.News.Id))
                    {
                        NewsDTO dto = new NewsDTO(m.News);
                        //var newestDate = m.News.Modifications.Max(x => x.ModificationDate);
                        //int LastModifiedUser = m.News.Modifications.First(x => x.ModificationDate == newestDate).Id;
                        //dto.LastModifiedUser = new UserDTO(session.Load<User>(LastModifiedUser));
                        news.Add(dto);
                    }
                }
                session.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                if (session != null)
                {
                    session.Close();
                }
            }
            return(news);
        }
예제 #18
0
 //Update
 public int?Update(NewsDTO entity)
 {
     try
     {
         using (MySqlConnection conn = _con.GetConnection())
         {
             conn.Open();
             MySqlCommand cmd = new MySqlCommand("UPDATE news SET NewsTitle = ?NewsTitle,NewsSubject = ?NewsSubject, NewsDate = ?NewsDate, " +
                                                 "NewsArticle = ?NewsArticle WHERE NewsID = ?id", conn);
             //where id is
             cmd.Parameters.AddWithValue("id", entity.NewsID);
             //values
             cmd.Parameters.AddWithValue("NewsTitle", entity.NewsTitle ?? (object)DBNull.Value);
             cmd.Parameters.AddWithValue("NewsSubject", entity.NewsSubject ?? (object)DBNull.Value);
             cmd.Parameters.AddWithValue("NewsDate", entity.NewsDate ?? (object)DBNull.Value);
             cmd.Parameters.AddWithValue("NewsArticle", entity.NewsArticle ?? (object)DBNull.Value);
             //execute command
             int rowsAffected = cmd.ExecuteNonQuery();
             //should return if a row is affected or not
             return(rowsAffected);
         }
     }
     catch (Exception ex)
     {
         throw new ContextErrorException(ex);
     }
 }
예제 #19
0
        public void AddNews(NewsDTO newsDto)
        {
            News news = _mapper.Map <NewsDTO, News>(newsDto);

            Database.News.Create(news);
            Database.Save();
        }
예제 #20
0
 //Create
 public int?Add(NewsDTO entity)
 {
     try
     {
         using (MySqlConnection conn = _con.GetConnection())
         {
             conn.Open();
             MySqlCommand cmd = new MySqlCommand("INSERT INTO news (NewsTitle,NewsSubject,NewsDate,NewsArticle) " +
                                                 "VALUES(?NewsTitle,?NewsSubject,?NewsDate,?NewsArticle)", conn);
             //values
             cmd.Parameters.AddWithValue("NewsTitle", entity.NewsTitle ?? (object)DBNull.Value);
             cmd.Parameters.AddWithValue("NewsSubject", entity.NewsSubject ?? (object)DBNull.Value);
             cmd.Parameters.AddWithValue("NewsDate", entity.NewsDate ?? (object)DBNull.Value);
             cmd.Parameters.AddWithValue("NewsArticle", entity.NewsArticle ?? (object)DBNull.Value);
             //execute command
             int rowsAffected = cmd.ExecuteNonQuery();
             //should return if a row is affected or not
             return(rowsAffected);
         }
     }
     catch (Exception ex)
     {
         throw new ContextErrorException(ex);
     }
 }
예제 #21
0
        public ActionResult GetDetailNews(Guid id)
        {
            NewsDTO newsDto       = _newsService.GetNewsDTOById(id);
            var     newsViewModel = _mapper.Map <NewsDTO, NewsViewModel>(newsDto);

            return(View(newsViewModel));
        }
예제 #22
0
        public NewsDTO GetByID(int?id)
        {
            try
            {
                NewsDTO news = new NewsDTO();

                using (MySqlConnection conn = _con.GetConnection())
                {
                    conn.Open();
                    MySqlCommand cmd = new MySqlCommand("SELECT NewsID,NewsTitle,NewsSubject,NewsDate,NewsArticle FROM news WHERE NewsID = ?id", conn);
                    cmd.Parameters.AddWithValue("id", id);

                    using (var reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            news.NewsID      = reader[0] as int? ?? default;
                            news.NewsTitle   = reader[1] as string ?? default;
                            news.NewsSubject = reader[2] as string ?? default;
                            news.NewsDate    = reader[3] as DateTime? ?? default;
                            news.NewsArticle = reader[4] as string ?? default;
                        }
                    }
                }
                return(news);
            }
            catch (Exception ex)
            {
                throw new ContextErrorException(ex);
            }
        }
예제 #23
0
        public async Task <IActionResult> Post(IFormFile files, string Text, string Title, string Course)
        {
            // full path to file in temp location
            var filePath = "/images/" + files.FileName;


            using (var fileStream = new FileStream(appEnvironment.WebRootPath + filePath, FileMode.Create))
            {
                await files.CopyToAsync(fileStream);
            }
            if (filePath == null)
            {
                filePath = " ";
            }
            var course = courseManager.Get().Where(e => e.Name == Course).FirstOrDefault();

            NewsDTO newsDTO = new NewsDTO()
            {
                Text      = Text,
                Title     = Title,
                ImagePath = filePath,
                Day       = DateTime.Today.Day,
                Month     = Enum.GetName(typeof(MonthEnum),
                                         DateTime.Today.Month - 1),
                CourseId = course.Id
            };

            newsManager.Insert(newsDTO);

            var news    = newsManager.GetAll().ToList();
            var courses = courseManager.GetAll().ToList();

            return(RedirectToAction("News"));
        }
예제 #24
0
        public NewsDTO GetNews(int newsId)
        {
            ISession session = null;
            NewsDTO  result  = null;

            try
            {
                session = DataLayer.GetSession();
                News news = session.Load <News>(newsId);
                result = new NewsDTO(news);
                var newestDate       = news.Modifications.Max(x => x.ModificationDate);
                int LastModifiedUser = news.Modifications.First(x => x.ModificationDate == newestDate).Id;
                result.LastModifiedUser = new UserDTO(session.Load <User>(LastModifiedUser));

                session.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                if (session != null)
                {
                    session.Close();
                }
            }
            return(result);
        }
예제 #25
0
 public async Task CreateNews([FromBody] NewsDTO news)
 {
     if (ModelState.IsValid)
     {
         await _newsService.CreateNews(news);
     }
 }
예제 #26
0
        public List <NewsDTO> GetAllNews()
        {
            List <NewsDTO> news    = new List <NewsDTO>();
            ISession       session = null;

            try
            {
                session = DataLayer.GetSession();

                IEnumerable <News> retData = from n in session.QueryOver <News>().List()
                                             select n;
                foreach (News n in retData)
                {
                    NewsDTO dto = new NewsDTO(n);

                    //var newestDate = n.Modifications.Max(x => x.ModificationDate);
                    //int LastModifiedUser = n.Modifications.First(x => x.ModificationDate == newestDate).User.Id;
                    //dto.LastModifiedUser = new UserDTO(session.Load<User>(LastModifiedUser));

                    news.Add(dto);
                }

                session.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                if (session != null)
                {
                    session.Close();
                }
            }

            return(news);
        }
예제 #27
0
        public IActionResult Patch(Guid id, [FromForm] NewsDTO value)
        {
            var session = HttpContext.Session.GetString("userId");

            if (session == null || Guid.Parse(session) != newsCollection.Find(n => n.Id == id).FirstOrDefault().AuthorId)
            {
                return(StatusCode(403));
            }
            var arr    = new List <UpdateDefinition <News> >();
            var update = Builders <News> .Update;

            if (value.Title != null)
            {
                arr.Add(update.Set(n => n.Title, value.Title));
            }
            if (value.Content != null)
            {
                arr.Add(update.Set(n => n.Content, value.Content));
            }
            arr.Add(update.Set(n => n.Date, DateTime.Now));

            var updateResult = newsCollection.UpdateOne(n => n.Id == id, update.Combine(arr));

            if (updateResult.MatchedCount == 0)
            {
                return(NotFound("News with this id not found"));
            }

            return(new ObjectResult(newsCollection.Find(n => n.Id == id).FirstOrDefault()));
        }
예제 #28
0
        public NewsDTO DeleteNews(int newsId)
        {
            ISession session = null;
            NewsDTO  result  = null;

            try
            {
                session = DataLayer.GetSession();
                News news = session.Load <News>(newsId);
                result = new NewsDTO(news);

                session.Delete(news);

                session.Flush();
                session.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                if (session != null)
                {
                    session.Close();
                }
            }

            return(result);
        }
예제 #29
0
        public async Task <IActionResult> Details(Guid id)
        {
            //var n = HttpContext.User.Identity.Name;

            if (id == null)
            {
                return(NotFound());
            }

            NewsDTO newsDTObyId = await _newsService.GetByIdAsync(id, HomeController.cancellationToken);

            if (newsDTObyId == null)
            {
                return(NotFound());
            }

            NewsDetailsViewModel _newsDetailsViewModel = new NewsDetailsViewModel()
            {
                Id            = newsDTObyId.Id,
                Title         = newsDTObyId.Title,
                Body          = newsDTObyId.Body,
                SourseURL     = newsDTObyId.SourseURL,
                CreatedOnDate = newsDTObyId.CreatedOnDate,
                EditedOnDate  = newsDTObyId.EditedOnDate,
            };

            return(View(_newsDetailsViewModel));
        }
예제 #30
0
        public void Insert(NewsDTO newsDto)
        {
            var news = _mapper.Map <News>(newsDto);

            _db.News.Insert(news);
            _db.Save();
        }