public IActionResult ClientsList(string searchString) { IEnumerable <TicketIndexDto> tickets; SupportIndexViewModel model = new SupportIndexViewModel(); if (!string.IsNullOrEmpty(searchString)) { model.SearchString = string.Concat(searchString.ToCharArray().Where(c => !Char.IsWhiteSpace(c))); tickets = _context.Set <Ticket>() .GetAll() .Include(t => t.Point) .Include(t => t.TicketSubject) .Include(t => t.TicketStatus) ?.Where(t => t.Point.NamePoint .ToLower() .Contains(model.SearchString.ToLower())) ?.Select(ticket => new TicketIndexDto { ClientName = ticket.Point.NamePoint, TicketStatusName = ticket.TicketStatus.TicketStatusName, TicketSubjectName = ticket.TicketSubject.TicketSubjectName, DateCreated = ticket.DateCreated, DateFinished = ticket.DateFinished, TimeElapsed = ticket.DateFinished.Value.Subtract(ticket.DateCreated.Value).Minutes }) .OrderBy(t => t.DateCreated) .ThenBy(t => t.ClientName); model.Tickets = tickets; } else { tickets = _context.Set <Ticket>() .GetAll() .Include(t => t.Point) .Include(t => t.TicketSubject) .Include(t => t.TicketStatus) ?.Select(ticket => new TicketIndexDto { ClientName = ticket.Point.NamePoint, TicketStatusName = ticket.TicketStatus.TicketStatusName, TicketSubjectName = ticket.TicketSubject.TicketSubjectName, DateCreated = ticket.DateCreated, DateFinished = ticket.DateFinished, TimeElapsed = ticket.DateFinished.Value.Subtract(ticket.DateCreated.Value).Minutes }) .OrderBy(t => t.DateCreated) .ThenBy(t => t.ClientName); model.Tickets = tickets; } return(PartialView(model)); }
public async Task <ActionResult> Index(int?state, int?searchUserId, int?searchCompId, int page = 1) { ViewBag.State = state; ViewBag.Page = page; ViewBag.SearchUserId = searchUserId; ViewBag.SearchCompId = searchCompId; if (!Request.IsAjaxRequest()) { return(View()); } var model = new SupportIndexViewModel(); var login = User.Identity.Name; var accountName = login.Substring(5, login.Length - 5); var person = _db.Persons.FirstOrDefault(p => p.AccountName == accountName); if (person == null) { return(HttpNotFound()); } model.UserId = person.Id; IEnumerable <SupportRequest> requests; //requests of a computer if (searchCompId != null) { var comp = await _db.Computers.FindAsync(searchCompId); if (comp != null) { requests = comp.SupportRequests .OrderBy(r => r.State) .ThenByDescending(r => r.CreationTime).AsEnumerable(); model.SearchString = comp.ComputerName; } else { return(HttpNotFound()); } } //requests of a user else if (searchUserId != null) { var user = await _db.Persons.FindAsync(searchUserId); if (user != null) { requests = user.SupportRequests.OrderBy(r => r.State) .ThenByDescending(r => r.CreationTime).AsEnumerable(); model.SearchString = user.FullName; } else { return(HttpNotFound()); } } //all requests else { requests = _db.SupportRequests .OrderBy(r => r.State) .ThenByDescending(r => r.CreationTime).AsEnumerable(); } List <SupportRequest> requestList; //non-IT user - show only user's requests if (!User.IsInRole(@"RIVS\IT-Dep")) { model.IsItUser = false; //user's requests with a selected state or all requests requestList = state != null ? requests.Where(r => r.From == person && r.State == state).ToList() : requests.Where(r => r.From == person).ToList(); } else { model.IsItUser = true; //IT user - show all users' requests with a selected state or all requests requestList = state != null ? requests.Where(r => r.State == state).ToList() : requests.ToList(); } var pager = new Pager(requestList.Count, page); model.Pager = pager; model.SupportRequests = requestList.Skip((pager.CurrentPage - 1) * pager.PageSize).Take(pager.PageSize).ToList(); return(PartialView("IndexPartial", model)); }