예제 #1
0
 public static News ToEntity(this NewsWidgetModel model, News destination)
 {
     return(model.MapTo(destination));
 }
예제 #2
0
 public static News ToEntity(this NewsWidgetModel model)
 {
     return(model.MapTo <NewsWidgetModel, News>());
 }
예제 #3
0
        public ActionResult Details(NewsWidgetModel model, FormCollection frm)
        {
            var news = _newsService.GetNewsById(model.Id);
            var user = _userContext.CurrentUser;

            if (user != null)
            {
                model.IsAuthenticated = true;
            }

            if (ModelState.IsValid)
            {
                if (model.IsAuthenticated)
                {
                    string textComments = "";
                    var    keyComment   = frm.AllKeys.FirstOrDefault(x => x.Trim().ToLower() == "txtcomment");
                    if (keyComment != null && !string.IsNullOrEmpty(frm[keyComment].ToString()))
                    {
                        textComments = frm[keyComment].ToString();

                        var comments = _commentService.GetCommentsByNews(model.Id);
                        comments = comments.OrderBy(x => x.DisplayOrder).ToList();

                        var newComment = new CommentModel();
                        newComment.NewsId       = model.Id;
                        newComment.CommentHtml  = textComments;
                        newComment.DisLikes     = newComment.Likes = newComment.ExamId = newComment.HomeworkId = newComment.BlogId = newComment.ProductId = 0;
                        newComment.UserId       = user.Id;
                        newComment.Username     = user.UserName;
                        newComment.DisplayOrder = comments.Count + 1;
                        var commentEntity = newComment.ToEntity();
                        commentEntity.CreatedOn = commentEntity.ModifiedOn = DateTime.Now;
                        _commentService.Insert(commentEntity);

                        if (commentEntity.Id > 0)
                        {
                            news.Comments.Add(commentEntity);
                        }

                        // Update News
                        _newsService.Update(news);
                    }
                }
                else
                {
                    var    newUser      = new UserModel();
                    string textComments = "";
                    var    keyUsername  = frm.AllKeys.FirstOrDefault(x => x.Trim().ToLower() == "username");
                    if (keyUsername != null && !string.IsNullOrEmpty(frm[keyUsername].ToString()))
                    {
                        newUser.Username = frm[keyUsername].ToString();
                    }

                    var keyEmail = frm.AllKeys.FirstOrDefault(x => x.Trim().ToLower() == "email");
                    if (keyEmail != null && !string.IsNullOrEmpty(frm[keyEmail].ToString()))
                    {
                        newUser.Email = frm[keyEmail].ToString();
                    }

                    var keyPassword = frm.AllKeys.FirstOrDefault(x => x.Trim().ToLower() == "password");
                    if (keyPassword != null && !string.IsNullOrEmpty(frm[keyPassword].ToString()))
                    {
                        newUser.Password = frm[keyPassword].ToString();
                    }

                    var keyComment = frm.AllKeys.FirstOrDefault(x => x.Trim().ToLower() == "txtcomment");
                    if (keyComment != null && !string.IsNullOrEmpty(frm[keyComment].ToString()))
                    {
                        textComments = frm[keyComment].ToString();
                    }

                    if (!string.IsNullOrEmpty(newUser.Username) &&
                        !string.IsNullOrEmpty(newUser.Email) &&
                        !string.IsNullOrEmpty(newUser.Password) &&
                        !string.IsNullOrEmpty(textComments))
                    {
                        newUser.IsActive   = true;
                        newUser.IsApproved = true;
                        newUser.IsBlocked  = false;
                        newUser.UserGuid   = Guid.NewGuid();
                        var userEntity = newUser.ToEntity();
                        userEntity.CreatedOn = userEntity.ModifiedOn = DateTime.Now;

                        var defaultRole = _roleService.GetRoleByName("General");
                        userEntity.Roles.Add(defaultRole);
                        _userService.Insert(userEntity);

                        // Impersonate Relation
                        var teacher = _smsService.GetTeacherByImpersonateId(userEntity.Id);
                        var student = _smsService.GetStudentByImpersonateId(userEntity.Id);

                        //sign in customer
                        _authenticationService.SignIn(userEntity, false);
                        _userContext.CurrentUser = userEntity;

                        var comments = _commentService.GetCommentsByNews(model.Id);
                        comments = comments.OrderBy(x => x.DisplayOrder).ToList();

                        var newComment = new CommentModel();
                        newComment.NewsId       = model.Id;
                        newComment.CommentHtml  = textComments;
                        newComment.DisLikes     = newComment.Likes = newComment.ExamId = newComment.HomeworkId = newComment.BlogId = newComment.ProductId = 0;
                        newComment.UserId       = userEntity.Id;
                        newComment.Username     = userEntity.UserName;
                        newComment.DisplayOrder = comments.Count + 1;
                        var commentEntity = newComment.ToEntity();
                        commentEntity.CreatedOn = commentEntity.ModifiedOn = DateTime.Now;
                        _commentService.Insert(commentEntity);

                        if (commentEntity.Id > 0)
                        {
                            news.Comments.Add(commentEntity);
                        }

                        // Update News
                        _newsService.Update(news);
                    }
                }

                SuccessNotification("Comment Added Successfully!");
            }
            else
            {
                if (news != null)
                {
                    model = news.ToWidgetModel();
                    model.IsAuthenticated = false;

                    if (user != null)
                    {
                        model.IsAuthenticated = true;
                    }

                    var newsPictures = _pictureService.GetNewsPictureByNewsId(news.Id).OrderByDescending(x => x.StartDate).ToList();
                    model.HasDefaultPicture = newsPictures.Any(x => x.IsDefault);

                    var newsVideos = _videoService.GetNewsVideosByNewsId(news.Id).OrderByDescending(x => x.StartDate).ToList();
                    model.HasDefaultVideo = newsVideos.Count > 0;

                    if (newsPictures.Count > 0)
                    {
                        model.DefaultPictureSrc = newsPictures.FirstOrDefault(x => model.HasDefaultPicture ? x.IsDefault : true).Picture.PictureSrc;
                        model.Pictures          = newsPictures.Select(x => x.ToModel()).ToList();
                    }

                    if (newsVideos.Count > 0)
                    {
                        model.DefaultVideoSrc = newsVideos.FirstOrDefault().Video.VideoSrc;
                        model.Videos          = newsVideos.Select(x => x.ToModel()).ToList();
                    }

                    model.Reactions = _smsService.SearchReactions(newsid: news.Id).Select(x => x.ToModel()).OrderByDescending(x => x.CreatedOn).ToList();
                    model.Comments  = _commentService.GetCommentsByNews(news.Id).OrderByDescending(x => x.CreatedOn).Select(x => x.ToWidgetModel()).ToList();

                    if (model.Comments.Count > 0)
                    {
                        foreach (var comment in model.Comments)
                        {
                            comment.Replies = _replyService.GetAllRepliesByComment(comment.Id).OrderBy(x => x.DisplayOrder).Select(x => x.ToWidgetModel()).ToList();
                        }
                    }

                    var fromUser = _userService.GetUserById(model.UserId);
                    if (fromUser != null)
                    {
                        model.User     = fromUser.ToModel();
                        model.Username = !string.IsNullOrEmpty(fromUser.FirstName) ? (fromUser.FirstName + (!string.IsNullOrEmpty(fromUser.LastName) ? (" " + fromUser.LastName) : "")) : !string.IsNullOrEmpty(fromUser.UserName) ? fromUser.UserName : fromUser.Email;

                        if (model.User.ProfilePictureId > 0)
                        {
                            var proPicture = _pictureService.GetPictureById(model.User.ProfilePictureId);
                            model.User.ProfilePicture = proPicture.ToModel();
                        }

                        if (model.User.CoverPictureId > 0)
                        {
                            var coverPicture = _pictureService.GetPictureById(model.User.CoverPictureId);
                            model.User.CoverPicture = coverPicture.ToModel();
                        }
                    }
                    var studentUser = _smsService.GetStudentByImpersonatedUser(fromUser.Id);
                    var teacherUser = _smsService.GetTeacherByImpersonatedUser(fromUser.Id);
                    if (studentUser != null)
                    {
                        model.IsStudent = true;
                        model.Student   = studentUser.ToModel();

                        if (model.Student.StudentPictureId > 0)
                        {
                            var proPicture = _pictureService.GetPictureById(model.Student.StudentPictureId);
                            model.User.StudentProfilePicture = proPicture.ToModel();
                        }

                        if (model.Student.CoverPictureId > 0)
                        {
                            var coverPicture = _pictureService.GetPictureById(model.Student.CoverPictureId);
                            model.User.StudentCoverPicture = coverPicture.ToModel();
                        }
                    }

                    if (teacherUser != null)
                    {
                        model.IsTeacher = true;
                        model.Teacher   = teacherUser.ToModel();

                        if (model.Teacher.ProfilePictureId > 0)
                        {
                            var proPicture = _pictureService.GetPictureById(model.Teacher.ProfilePictureId);
                            model.User.TeacherProfilePicture = proPicture.ToModel();
                        }

                        if (model.Teacher.CoverPictureId > 0)
                        {
                            var coverPicture = _pictureService.GetPictureById(model.Teacher.CoverPictureId);
                            model.User.TeacherCoverPicture = coverPicture.ToModel();
                        }
                    }

                    model.LatestPosts = _newsService.GetLatestNews(model.Id).Select(x => x.ToWidgetModel()).OrderByDescending(x => x.CreatedOn).Take(3).ToList();
                    foreach (var post in model.LatestPosts)
                    {
                        var postPictures = _pictureService.GetNewsPictureByNewsId(post.Id).OrderByDescending(x => x.StartDate).ToList();
                        post.HasDefaultPicture = postPictures.Any(x => x.IsDefault);

                        var postVideos = _videoService.GetNewsVideosByNewsId(post.Id).OrderByDescending(x => x.StartDate).ToList();
                        post.HasDefaultVideo = postVideos.Count > 0;

                        if (postPictures.Count > 0)
                        {
                            post.DefaultPictureSrc = postPictures.FirstOrDefault(x => post.HasDefaultPicture ? x.IsDefault : true).Picture.PictureSrc;
                            post.Pictures          = postPictures.Select(x => x.ToModel()).ToList();
                        }

                        if (postVideos.Count > 0)
                        {
                            post.DefaultVideoSrc = postVideos.FirstOrDefault().Video.VideoSrc;
                            post.Videos          = postVideos.Select(x => x.ToModel()).ToList();
                        }
                    }

                    model.OlderPosts = _newsService.GetOlderNews(model.Id).Select(x => x.ToWidgetModel()).OrderByDescending(x => x.CreatedOn).Take(3).ToList();
                    foreach (var post in model.OlderPosts)
                    {
                        var postPictures = _pictureService.GetNewsPictureByNewsId(post.Id).OrderByDescending(x => x.StartDate).ToList();
                        post.HasDefaultPicture = postPictures.Any(x => x.IsDefault);

                        var postVideos = _videoService.GetNewsVideosByNewsId(post.Id).OrderByDescending(x => x.StartDate).ToList();
                        post.HasDefaultVideo = postVideos.Count > 0;

                        if (postPictures.Count > 0)
                        {
                            post.DefaultPictureSrc = postPictures.FirstOrDefault(x => post.HasDefaultPicture ? x.IsDefault : true).Picture.PictureSrc;
                            post.Pictures          = postPictures.Select(x => x.ToModel()).ToList();
                        }

                        if (postVideos.Count > 0)
                        {
                            post.DefaultVideoSrc = postVideos.FirstOrDefault().Video.VideoSrc;
                            post.Videos          = postVideos.Select(x => x.ToModel()).ToList();
                        }
                    }

                    model.Pictures.Clear();
                    foreach (var picture in newsPictures)
                    {
                        if (!model.Pictures.Any(x => x.Id == picture.Id))
                        {
                            var picModel = picture.ToModel();
                            picModel.CreatedOn  = picture.CreatedOn;
                            picModel.ModifiedOn = picture.ModifiedOn;
                            picModel.Picture    = _pictureService.GetPictureById(picture.PictureId).ToModel();
                            model.Pictures.Add(picModel);
                        }
                    }

                    model.Videos.Clear();
                    foreach (var video in newsVideos)
                    {
                        if (!model.Videos.Any(x => x.Id == video.Id))
                        {
                            var vidModel = video.ToModel();
                            vidModel.CreatedOn  = video.CreatedOn;
                            vidModel.ModifiedOn = video.ModifiedOn;
                            vidModel.Video      = _videoService.GetVideoById(video.VideoId).ToModel();
                            model.Videos.Add(vidModel);
                        }
                    }
                }
                else
                {
                    return(RedirectToAction("PageNotFound"));
                }

                return(View(model));
            }

            return(RedirectToRoute("News", new { name = model.SystemName }));
        }
예제 #4
0
        public ActionResult Index()
        {
            var returnResult = new List <NewsWidgetModel>();
            var widgetModel  = _newsService.GetAllNews(true).Where(x => DateTime.Now >= x.StartDate && DateTime.Now <= x.EndDate).Select(x => x.ToWidgetModel()).OrderByDescending(x => x.CreatedOn).Take(4).ToList();

            if (widgetModel.Count > 0)
            {
                foreach (var n in widgetModel)
                {
                    var model = new NewsWidgetModel();
                    model.Status = EnumExtensions.GetDescriptionByValue <NewsStatus>(Convert.ToInt32(n.NewsStatusId));

                    DateTime now         = DateTime.Now;
                    var      lastOneHour = now.AddHours(-1);
                    if (n.StartDate != null)
                    {
                        if (n.StartDate.Value.Date == DateTime.Now.Date)
                        {
                            model.NewsStatusId = 5;
                            model.Status       = "Latest";
                        }
                        else if (n.StartDate.Value > lastOneHour && n.StartDate.Value <= now)
                        {
                            model.NewsStatusId = 4;
                            model.Status       = "Fresh";
                        }
                    }

                    if (n.EndDate != null && n.EndDate.Value < now.AddHours(-1))
                    {
                        model.NewsStatusId = 6;
                        model.Status       = "Outdated";
                    }

                    var newsPictures = _pictureService.GetNewsPictureByNewsId(n.Id).OrderByDescending(x => x.StartDate).ToList();
                    model.HasDefaultPicture = newsPictures.Any(x => x.IsDefault);

                    var newsVideos = _videoService.GetNewsVideosByNewsId(n.Id).OrderByDescending(x => x.StartDate).ToList();
                    model.HasDefaultVideo = newsVideos.Count > 0;

                    if (newsPictures.Count > 0)
                    {
                        model.DefaultPictureSrc = newsPictures.FirstOrDefault(x => model.HasDefaultPicture ? x.IsDefault : true).Picture.PictureSrc;
                        model.Pictures          = newsPictures.Select(x => x.ToModel()).ToList();
                    }

                    if (newsVideos.Count > 0)
                    {
                        model.DefaultVideoSrc = newsVideos.FirstOrDefault().Video.VideoSrc;
                        model.Videos          = newsVideos.Select(x => x.ToModel()).ToList();
                    }

                    model.Reactions    = _smsService.SearchReactions(newsid: n.Id).Select(x => x.ToModel()).OrderByDescending(x => x.CreatedOn).ToList();
                    model.Comments     = _commentService.GetCommentsByNews(n.Id).OrderByDescending(x => x.CreatedOn).Select(x => x.ToWidgetModel()).ToList();
                    model.Author       = n.Author;
                    model.Description  = n.Description;
                    model.EndDate      = n.EndDate;
                    model.Id           = n.Id;
                    model.NewsStatusId = n.NewsStatusId;
                    model.ShortName    = n.ShortName;
                    model.StartDate    = n.StartDate;
                    model.SystemName   = n.SystemName;

                    if (model.Comments.Count > 0)
                    {
                        foreach (var comment in model.Comments)
                        {
                            comment.Replies = _replyService.GetAllRepliesByComment(comment.Id).OrderBy(x => x.DisplayOrder).Select(x => x.ToWidgetModel()).ToList();
                        }
                    }

                    returnResult.Add(model);
                }
                ;
            }
            return(PartialView(returnResult));
        }
예제 #5
0
        public ActionResult Details(int id)
        {
            var model = new NewsWidgetModel();
            var news  = _newsService.GetNewsById(id);
            var user  = _userContext.CurrentUser;

            if (news != null)
            {
                model = news.ToWidgetModel();
                model.IsAuthenticated = false;

                if (user != null)
                {
                    model.IsAuthenticated = true;
                }

                var newsPictures = _pictureService.GetNewsPictureByNewsId(news.Id).OrderByDescending(x => x.StartDate).ToList();
                model.HasDefaultPicture = newsPictures.Any(x => x.IsDefault);

                var newsVideos = _videoService.GetNewsVideosByNewsId(news.Id).OrderByDescending(x => x.StartDate).ToList();
                model.HasDefaultVideo = newsVideos.Count > 0;

                if (newsPictures.Count > 0)
                {
                    model.DefaultPictureSrc = newsPictures.FirstOrDefault(x => model.HasDefaultPicture ? x.IsDefault : true).Picture.PictureSrc;
                    model.Pictures          = newsPictures.Select(x => x.ToModel()).ToList();
                }

                if (newsVideos.Count > 0)
                {
                    model.DefaultVideoSrc = newsVideos.FirstOrDefault().Video.VideoSrc;
                    model.Videos          = newsVideos.Select(x => x.ToModel()).ToList();
                }

                model.Reactions = _smsService.SearchReactions(newsid: news.Id).Select(x => x.ToModel()).OrderByDescending(x => x.CreatedOn).ToList();
                model.Comments  = _commentService.GetCommentsByNews(news.Id).OrderByDescending(x => x.CreatedOn).Select(x => x.ToWidgetModel()).ToList();

                if (model.Comments.Count > 0)
                {
                    foreach (var comment in model.Comments)
                    {
                        comment.Replies = _replyService.GetAllRepliesByComment(comment.Id).OrderBy(x => x.DisplayOrder).Select(x => x.ToWidgetModel()).ToList();
                    }
                }

                var fromUser = _userService.GetUserById(model.UserId);
                if (fromUser != null)
                {
                    model.User     = fromUser.ToModel();
                    model.Username = !string.IsNullOrEmpty(fromUser.FirstName) ? (fromUser.FirstName + (!string.IsNullOrEmpty(fromUser.LastName) ? (" " + fromUser.LastName) : "")) : !string.IsNullOrEmpty(fromUser.UserName) ? fromUser.UserName : fromUser.Email;

                    if (model.User.ProfilePictureId > 0)
                    {
                        var proPicture = _pictureService.GetPictureById(model.User.ProfilePictureId);
                        model.User.ProfilePicture = proPicture.ToModel();
                    }

                    if (model.User.CoverPictureId > 0)
                    {
                        var coverPicture = _pictureService.GetPictureById(model.User.CoverPictureId);
                        model.User.CoverPicture = coverPicture.ToModel();
                    }
                }
                var studentUser = _smsService.GetStudentByImpersonatedUser(fromUser.Id);
                var teacherUser = _smsService.GetTeacherByImpersonatedUser(fromUser.Id);
                if (studentUser != null)
                {
                    model.IsStudent = true;
                    model.Student   = studentUser.ToModel();

                    if (model.Student.StudentPictureId > 0)
                    {
                        var proPicture = _pictureService.GetPictureById(model.Student.StudentPictureId);
                        model.User.StudentProfilePicture = proPicture.ToModel();
                    }

                    if (model.Student.CoverPictureId > 0)
                    {
                        var coverPicture = _pictureService.GetPictureById(model.Student.CoverPictureId);
                        model.User.StudentCoverPicture = coverPicture.ToModel();
                    }
                }

                if (teacherUser != null)
                {
                    model.IsTeacher = true;
                    model.Teacher   = teacherUser.ToModel();

                    if (model.Teacher.ProfilePictureId > 0)
                    {
                        var proPicture = _pictureService.GetPictureById(model.Teacher.ProfilePictureId);
                        model.User.TeacherProfilePicture = proPicture.ToModel();
                    }

                    if (model.Teacher.CoverPictureId > 0)
                    {
                        var coverPicture = _pictureService.GetPictureById(model.Teacher.CoverPictureId);
                        model.User.TeacherCoverPicture = coverPicture.ToModel();
                    }
                }

                model.LatestPosts = _newsService.GetLatestNews(model.Id).Select(x => x.ToWidgetModel()).OrderByDescending(x => x.CreatedOn).Take(3).ToList();
                foreach (var post in model.LatestPosts)
                {
                    var postPictures = _pictureService.GetNewsPictureByNewsId(post.Id).OrderByDescending(x => x.StartDate).ToList();
                    post.HasDefaultPicture = postPictures.Any(x => x.IsDefault);

                    var postVideos = _videoService.GetNewsVideosByNewsId(post.Id).OrderByDescending(x => x.StartDate).ToList();
                    post.HasDefaultVideo = postVideos.Count > 0;

                    if (postPictures.Count > 0)
                    {
                        post.DefaultPictureSrc = postPictures.FirstOrDefault(x => post.HasDefaultPicture ? x.IsDefault : true).Picture.PictureSrc;
                        post.Pictures          = postPictures.Select(x => x.ToModel()).ToList();
                    }

                    if (postVideos.Count > 0)
                    {
                        post.DefaultVideoSrc = postVideos.FirstOrDefault().Video.VideoSrc;
                        post.Videos          = postVideos.Select(x => x.ToModel()).ToList();
                    }
                }

                model.OlderPosts = _newsService.GetOlderNews(model.Id).Select(x => x.ToWidgetModel()).OrderByDescending(x => x.CreatedOn).Take(3).ToList();
                foreach (var post in model.OlderPosts)
                {
                    var postPictures = _pictureService.GetNewsPictureByNewsId(post.Id).OrderByDescending(x => x.StartDate).ToList();
                    post.HasDefaultPicture = postPictures.Any(x => x.IsDefault);

                    var postVideos = _videoService.GetNewsVideosByNewsId(post.Id).OrderByDescending(x => x.StartDate).ToList();
                    post.HasDefaultVideo = postVideos.Count > 0;

                    if (postPictures.Count > 0)
                    {
                        post.DefaultPictureSrc = postPictures.FirstOrDefault(x => post.HasDefaultPicture ? x.IsDefault : true).Picture.PictureSrc;
                        post.Pictures          = postPictures.Select(x => x.ToModel()).ToList();
                    }

                    if (postVideos.Count > 0)
                    {
                        post.DefaultVideoSrc = postVideos.FirstOrDefault().Video.VideoSrc;
                        post.Videos          = postVideos.Select(x => x.ToModel()).ToList();
                    }
                }

                model.Pictures.Clear();
                foreach (var picture in newsPictures)
                {
                    if (!model.Pictures.Any(x => x.Id == picture.Id))
                    {
                        var picModel = picture.ToModel();
                        picModel.CreatedOn  = picture.CreatedOn;
                        picModel.ModifiedOn = picture.ModifiedOn;
                        picModel.Picture    = _pictureService.GetPictureById(picture.PictureId).ToModel();
                        model.Pictures.Add(picModel);
                    }
                }

                model.Videos.Clear();
                foreach (var video in newsVideos)
                {
                    if (!model.Videos.Any(x => x.Id == video.Id))
                    {
                        var vidModel = video.ToModel();
                        vidModel.CreatedOn  = video.CreatedOn;
                        vidModel.ModifiedOn = video.ModifiedOn;
                        vidModel.Video      = _videoService.GetVideoById(video.VideoId).ToModel();
                        model.Videos.Add(vidModel);
                    }
                }
            }
            else
            {
                return(RedirectToAction("PageNotFound"));
            }

            return(View(model));
        }