public ActionResult Details(int? id, int? commentsPage)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }

            var ticketId = id.GetValueOrDefault();
            var ticket = this.Data.Tickets.GetById(ticketId);

            if (ticket == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.NotFound);
            }

            var ticketViewModel = new TicketDetailsViewModel()
            {
                Id = ticket.Id,
                AuthorName = ticket.Author.UserName,
                CategoryName = ticket.Category.Name,
                CategoryId = ticket.Category.Id,
                Description = ticket.Description,
                Priority = ticket.Priority,
                Status = ticket.Status,
                Title = ticket.Title,
                Attachments = ticket.Attatchments
                                    .Where(a => a.Status == AttachmentStatus.Existing)
                                    .Select(a => new AttachmentViewModel
                                           {
                                               Id = a.Id,
                                               Name = a.Name,
                                               Path = a.Path,
                                               TicketId = ticket.Id
                                           })
            };

            var commentsPageIndex = commentsPage.GetValueOrDefault(1);
            var comments = ticket.Comments
                                 .Select(c => new CommentDetailsViewModel()
                                        {
                                            Id = c.Id,
                                            UserName = c.User.UserName,
                                            Content = c.Content,
                                            PostDate = c.PostDate,
                                            TicketId = c.Ticket.Id,
                                        })
                                 .OrderByDescending(c => c.PostDate)
                                 .Skip((commentsPageIndex - 1) * Properties.Settings.Default.TicketPageCommentsPageSize)
                                 .Take(Properties.Settings.Default.TicketPageCommentsPageSize)
                                 .ToList();

            ticketViewModel.CommentsContainer = new CommentPagebleViewModel
            {
                Comments = comments,
                CurrentPage = commentsPageIndex,
                TotalRecordsCount = comments.Count(),
                PagesCount = (int)Math.Ceiling((double)ticket.Comments.Count / Properties.Settings.Default.TicketPageCommentsPageSize)
            };

            return this.View(ticketViewModel);
        }
        public ActionResult Delete(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }

            var ticketId = id.GetValueOrDefault();
            var ticket = this.Data.Tickets.GetById(ticketId);

            if (ticket == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.NotFound);
            }

            var ticketViewModel = new TicketDetailsViewModel()
            {
                AuthorName = ticket.Author.UserName,
                CategoryName = ticket.Category.Name,
                CategoryId = ticket.Category.Id,
                Description = ticket.Description,
                Priority = ticket.Priority,
                Status = ticket.Status,
                Title = ticket.Title,
                Id = ticket.Id
            };

            return this.View(ticketViewModel);
        }
        public ActionResult Delete(int? id, TicketDetailsViewModel ticketViewModel)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }

            var ticketId = id.GetValueOrDefault();
            var ticket = this.Data.Tickets.GetById(ticketId);

            if (ticket == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.NotFound);
            }

            this.Data.Tickets.Delete(ticket);
            this.Data.SaveChanges();

            return this.RedirectToAction("Index", "Home");
        }