public async Task <IActionResult> SendComment(CommentViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                viewModel.PostageDateTime = DateTimeExtensions.DateTimeWithOutMilliSecends(DateTime.Now);
                viewModel.CommentId       = StringExtensions.GenerateId(10);
                await _uw.BaseRepository <Comment>().CreateAsync(_mapper.Map <Comment>(viewModel));

                await _uw.Commit();

                TempData["notification"] = "دیدگاه شما با موفقیت ارسال شد و بعد از تایید در سایت نمایش داده می شود.";
            }
            return(PartialView("_SendComment", viewModel));
        }
예제 #2
0
        public async Task <IActionResult> CreateOrUpdate(NewsViewModel viewModel, string submitButton)
        {
            viewModel.Url = viewModel.Url.Trim();
            ViewBag.Tags  = _uw._Context.Tags.Select(t => t.TagName).ToList();
            viewModel.NewsCategoriesViewModel = new NewsCategoriesViewModel(await _uw.CategoryRepository.GetAllCategoriesAsync(), viewModel.CategoryIds);
            if (!viewModel.FuturePublish)
            {
                ModelState.Remove("PersianPublishTime");
                ModelState.Remove("PersianPublishDate");
            }
            if (viewModel.NewsId.HasValue())
            {
                ModelState.Remove("ImageFile");
            }

            if (ModelState.IsValid)
            {
                if (submitButton != "ذخیره پیش نویس")
                {
                    viewModel.IsPublish = true;
                }

                if (viewModel.ImageFile != null)
                {
                    viewModel.ImageName = $"news-{StringExtensions.GenerateId(10)}.jpg";
                }

                if (viewModel.NewsId.HasValue())
                {
                    var news = _uw.BaseRepository <News>().FindByConditionAsync(n => n.NewsId == viewModel.NewsId, null, n => n.NewsCategories, n => n.NewsTags).Result.FirstOrDefault();
                    if (news == null)
                    {
                        ModelState.AddModelError(string.Empty, NewsNotFound);
                    }
                    else
                    {
                        if (viewModel.IsPublish && news.IsPublish == false)
                        {
                            viewModel.PublishDateTime = DateTimeExtensions.DateTimeWithOutMilliSecends(DateTime.Now);
                        }

                        if (viewModel.IsPublish && news.IsPublish == true)
                        {
                            if (viewModel.PersianPublishDate.HasValue())
                            {
                                var persianTimeArray = viewModel.PersianPublishTime.Split(':');
                                viewModel.PublishDateTime = viewModel.PersianPublishDate.ConvertShamsiToMiladi().Date + new TimeSpan(int.Parse(persianTimeArray[0]), int.Parse(persianTimeArray[1]), 0);
                            }
                            else
                            {
                                viewModel.PublishDateTime = news.PublishDateTime;
                            }
                        }

                        if (viewModel.ImageFile != null)
                        {
                            viewModel.ImageFile.UploadFileBase64($"{_env.WebRootPath}/newsImage/{viewModel.ImageName}");
                            FileExtensions.DeleteFile($"{_env.WebRootPath}/newsImage/{news.ImageName}");
                        }

                        else
                        {
                            viewModel.ImageName = news.ImageName;
                        }


                        if (viewModel.NameOfTags.HasValue())
                        {
                            viewModel.NewsTags = await _uw.TagRepository.InsertNewsTags(viewModel.NameOfTags.Split(','), news.NewsId);
                        }
                        else
                        {
                            viewModel.NewsTags = news.NewsTags;
                        }

                        if (viewModel.CategoryIds == null)
                        {
                            viewModel.NewsCategories = news.NewsCategories;
                        }
                        else
                        {
                            viewModel.NewsCategories = viewModel.CategoryIds.Select(c => new NewsCategory {
                                CategoryId = c, NewsId = news.NewsId
                            }).ToList();
                        }

                        viewModel.UserId = news.UserId;
                        _uw.BaseRepository <News>().Update(_mapper.Map(viewModel, news));
                        await _uw.Commit();

                        ViewBag.Alert = "ذخیره تغییرات با موفقیت انجام شد.";
                    }
                }

                else
                {
                    viewModel.ImageFile.UploadFileBase64($"{_env.WebRootPath}/newsImage/{viewModel.ImageName}");
                    viewModel.NewsId = StringExtensions.GenerateId(10);
                    viewModel.UserId = User.Identity.GetUserId <int>();

                    if (viewModel.IsPublish)
                    {
                        if (!viewModel.PersianPublishDate.HasValue())
                        {
                            viewModel.PublishDateTime = DateTimeExtensions.DateTimeWithOutMilliSecends(DateTime.Now);
                        }
                        else
                        {
                            var persianTimeArray = viewModel.PersianPublishTime.Split(':');
                            viewModel.PublishDateTime = viewModel.PersianPublishDate.ConvertShamsiToMiladi().Date + new TimeSpan(int.Parse(persianTimeArray[0]), int.Parse(persianTimeArray[1]), 0);
                        }
                    }

                    if (viewModel.CategoryIds != null)
                    {
                        viewModel.NewsCategories = viewModel.CategoryIds.Select(c => new NewsCategory {
                            CategoryId = c
                        }).ToList();
                    }
                    else
                    {
                        viewModel.NewsCategories = null;
                    }

                    if (viewModel.NameOfTags.HasValue())
                    {
                        viewModel.NewsTags = await _uw.TagRepository.InsertNewsTags(viewModel.NameOfTags.Split(","));
                    }
                    else
                    {
                        viewModel.NewsTags = null;
                    }

                    await _uw.BaseRepository <News>().CreateAsync(_mapper.Map <News>(viewModel));

                    await _uw.Commit();

                    return(RedirectToAction(nameof(Index)));
                }
            }

            return(View(viewModel));
        }