public List <ThreadViewModel> GetFilteredList(ThreadBindingModel model)
        {
            if (model == null)
            {
                return(null);
            }

            using (Context context = new Context())
            {
                return(context.Threads
                       .Include(rec => rec.Students)
                       .ThenInclude(rec => rec.StudyingStatus)

                       /*.Where(rec => rec.Students.Select(rec => (!model.DateFrom.HasValue && !model.DateTo.HasValue) ||
                        * (model.DateFrom.HasValue && model.DateTo.HasValue && rec.StudyingStatus.DateCreate.Date >= model.DateFrom.Value.Date &&
                        * rec.StudyingStatus.DateCreate.Date <= model.DateTo.Value.Date)))*/
                       .Select(rec => new ThreadViewModel
                {
                    Faculty = rec.Faculty,
                    Name = rec.Name,
                    Statuses = rec.Students.Select(rec => new StudyingStatusViewModel
                    {
                        Id = rec.StudyingStatus.Id,
                        DateCreate = rec.StudyingStatus.EnrollmentDate,
                        Course = rec.StudyingStatus.Course,
                        StudyingForm = rec.StudyingStatus.StudyingForm,
                        StudyingBase = rec.StudyingStatus.StudyingBase,
                        StudentId = rec.StudyingStatus.StudentId,
                    }).ToList(),
                })
                       .ToList());
            }
        }
        public ActionResult Create(ThreadBindingModel model, int id)
        {
            Forum forum = this.GetForum(id);

            if (forum == default(Forum) || forum.IsDeleted)
            {
                return(this.RedirectToAction("BadRequest", "Error"));
            }

            if (!this.ModelState.IsValid)
            {
                model.Forum = new IdentifiableForumBindingModel()
                {
                    Id          = forum.ForumId,
                    Title       = forum.Title,
                    Description = forum.Description
                };

                return(this.View(model));
            }

            User user = this.GetUser();

            Thread newThread = new Thread()
            {
                Creator = user,
                Date    = DateTime.Now,
                Forum   = forum,
                Title   = model.Title,
            };

            newThread.Posts.Add(new Post()
            {
                Creator  = user,
                PostDate = DateTime.Now,
                Text     = new PostText()
                {
                    Text = model.Text
                }
            });

            newThread = this.UnitOfWork
                        .ThreadRepository
                        .Add(newThread);

            this.UnitOfWork.SaveChanges();

            return(this.RedirectToAction("Home", "Thread", new { Id = newThread.ThreadId }));
        }
Example #3
0
        public List <ThreadViewModel> Read(ThreadBindingModel model)
        {
            if (model == null)
            {
                return(storage.GetFullList());
            }

            if (model.Id.HasValue)
            {
                return(new List <ThreadViewModel> {
                    storage.GetElement(model)
                });
            }

            return(storage.GetFilteredList(model));
        }
        public ThreadViewModel GetElement(ThreadBindingModel model)
        {
            if (model == null)
            {
                return(null);
            }

            using (Context context = new Context())
            {
                Thread thread = context.Threads
                                .Include(rec => rec.Students)
                                .ThenInclude(rec => rec.StudyingStatus)
                                .FirstOrDefault(rec => rec.Name == model.Name ||
                                                rec.Id == model.Id);

                return(thread != null?CreateViewModel(thread) : null);
            }
        }
        /// <summary>
        /// Create empty model for thread creation
        /// </summary>
        /// <param name="id">forum id</param>
        /// <returns>view for creation</returns>
        public ActionResult Create(int id)
        {
            Forum forum = this.GetForum(id);

            if (forum == default(Forum) || forum.IsDeleted)
            {
                return(this.RedirectToAction("BadRequest", "Error"));
            }

            ThreadBindingModel thread = new ThreadBindingModel()
            {
                Forum = new IdentifiableForumBindingModel()
                {
                    Id          = forum.ForumId,
                    Title       = forum.Title,
                    Description = forum.Description
                }
            };

            return(this.View(thread));
        }