示例#1
0
        public async Task <IActionResult> New(NewsViewModel model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var elections = await _electionsRepository.GetElectionsForNewsFeed();

                    var ballots        = elections.Value.SelectMany(e => e.Ballots).ToList();
                    var selectedBallot = ballots
                                         .FirstOrDefault(b => b.BallotId == model.SelectedElectionId);
                    if (selectedBallot == null)
                    {
                        selectedBallot = ballots.FirstOrDefault();
                    }
                    var pictures = new List <ArticlePicture>();
                    if (model.Pictures != null && model.Pictures.Count > 0)
                    {
                        var uniqueFileNames = await UploadedFiles(model);

                        foreach (var fileName in uniqueFileNames)
                        {
                            pictures.Add(new ArticlePicture
                            {
                                Url = $"{fileName}"
                            });
                        }
                        await _picturesRepository.RemovePictures(model.NewsId);
                    }

                    var newsFeed = new Article
                    {
                        Link       = model.Link,
                        Embed      = model.Embed,
                        Title      = model.Title,
                        Body       = model.Body,
                        BallotId   = selectedBallot.BallotId,
                        ElectionId = selectedBallot.ElectionId,
                        Timestamp  = DateTime.Now,
                        AuthorId   = model.SelectedAuthorId.GetValueOrDefault(),
                        Pictures   = pictures
                    };
                    newsFeed.Id = model.NewsId;
                    await _articleRepository.AddArticle(newsFeed);

                    return(RedirectToAction(nameof(Index)));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
            var newsFeedViewModel = await BuildEditNewsFeedViewModel();

            return(View(newsFeedViewModel));
        }