// GET: MyTechnicalRequest public ViewResult Index(string sortOrder, string currentFilter, string searchString, int?page) { if (Session["userid"] == null) { return(View("LoginRedirect")); } else { if (WebConfigure.GetLoginPortal() == "true" && Common.GetUserXupj().ToLower() != Session["username"].ToString().ToLower()) { return(View("LoginRedirect")); } ViewBag.CurrentSort = sortOrder; ViewBag.DateSortParm = String.IsNullOrEmpty(sortOrder) ? "DateDesc" : ""; ViewBag.TitleSortParm = sortOrder == "Title" ? "TitleDesc" : "Title"; ViewBag.StatusSortParm = sortOrder == "Status" ? "StatusDesc" : "Status"; if (searchString != null) { page = 1; } else { searchString = currentFilter; } ViewBag.CurrentFilter = searchString; var tickets = _ticketBs.GetQueryableByUserConected(int.Parse(Session["userid"].ToString())); //Search MyTR if (!String.IsNullOrEmpty(searchString)) { int userlogin = int.Parse(Session["userid"].ToString()); if ("waiting your feedback".Contains(searchString.ToLower())) { tickets = tickets.Where(ticket => ticket.Title.Contains(searchString) || ticket.TicketNo.Contains(searchString) || ticket.SerialNumber.Contains(searchString) || (ticket.Status == 2 && userlogin.Equals(ticket.NextCommenter) && (userlogin.Equals(ticket.Responder) || userlogin.Equals(ticket.Submiter))) || ticket.Description.Contains(searchString) || ticket.EmailCC.Contains(searchString)); } else if ("pra".Contains(searchString.ToLower())) { tickets = tickets.Where(ticket => ticket.Title.Contains(searchString) || ticket.TicketNo.Contains(searchString) || ticket.SerialNumber.Contains(searchString) || (ticket.Status == 2 && !userlogin.Equals(ticket.NextCommenter) && ticket.NextCommenter.Equals(ticket.Responder)) || ticket.Description.Contains(searchString) || ticket.EmailCC.Contains(searchString)); } else if ("psa".Contains(searchString.ToLower())) { tickets = tickets.Where(ticket => ticket.Title.Contains(searchString) || ticket.TicketNo.Contains(searchString) || ticket.SerialNumber.Contains(searchString) || (ticket.Status == 2 && !userlogin.Equals(ticket.NextCommenter) && ticket.NextCommenter.Equals(ticket.Submiter)) || ticket.Description.Contains(searchString) || ticket.EmailCC.Contains(searchString)); } else if ("draft".Contains(searchString.ToLower())) { tickets = tickets.Where(ticket => ticket.Title.Contains(searchString) || ticket.TicketNo.Contains(searchString) || ticket.SerialNumber.Contains(searchString) || ticket.Status.Equals(1) || ticket.Description.Contains(searchString) || ticket.EmailCC.Contains(searchString)); } else if ("solved".Contains(searchString.ToLower())) { tickets = tickets.Where(ticket => ticket.Title.Contains(searchString) || ticket.TicketNo.Contains(searchString) || ticket.SerialNumber.Contains(searchString) || ticket.Status.Equals(6) || ticket.Description.Contains(searchString) || ticket.EmailCC.Contains(searchString)); } else if ("closed".Contains(searchString.ToLower())) { tickets = tickets.Where(ticket => ticket.Title.Contains(searchString) || ticket.TicketNo.Contains(searchString) || ticket.SerialNumber.Contains(searchString) || ticket.Status.Equals(3) || ticket.Description.Contains(searchString) || ticket.EmailCC.Contains(searchString)); } else { int[] UserParticipant = _ticketParticipantBusinessService.GetTicketIdBySearchUserId(searchString).ToArray(); int[] User = _userBusinessService.GetListSearchUser(searchString).ToArray(); int[] tagTicket = _articleTagBs.searchTagTicket(searchString).ToArray(); if (tagTicket.Length > 0) { tickets = tickets.Where(ticket => ticket.Title.Contains(searchString) || ticket.TicketNo.Contains(searchString) || ticket.SerialNumber.Contains(searchString) || ticket.DPPMno.Contains(searchString) || ticket.Description.Contains(searchString) || ticket.EmailCC.Contains(searchString) || (tagTicket.Contains(ticket.TicketId) && ticket.Status != 1) || ((User.Contains(ticket.Responder) || User.Contains(ticket.Submiter) || UserParticipant.Contains(ticket.TicketId)) && ticket.Status != 1)); } else { tickets = tickets.Where(ticket => ticket.Title.Contains(searchString) || ticket.TicketNo.Contains(searchString) || ticket.SerialNumber.Contains(searchString) || ticket.DPPMno.Contains(searchString) || ticket.Description.Contains(searchString) || ticket.EmailCC.Contains(searchString) || ((User.Contains(ticket.Responder) || User.Contains(ticket.Submiter) || UserParticipant.Contains(ticket.TicketId)) && ticket.Status != 1)); } } } List <Ticket> recent = new List <Ticket>(); if (tickets != null) { foreach (var item in tickets) { Ticket recentDate = new Ticket() { TicketId = item.TicketId, CreatedAt = new[] { item.CreatedAt, item.LastReply, item.UpdatedAt, item.LastStatusDate }.Max() }; recent.Add(recentDate); } ViewBag.RecentDate = recent; } else { ViewBag.RecentDate = null; } switch (sortOrder) { case "DateDesc": tickets = tickets.OrderBy(t => new[] { t.CreatedAt, t.LastReply, t.UpdatedAt, t.LastStatusDate }.Max()); break; case "Title": tickets = tickets.OrderBy(t => t.Title); break; case "TitleDesc": tickets = tickets.OrderByDescending(t => t.Title); break; case "Status": tickets = tickets.OrderBy(t => t.Status); break; case "StatusDesc": tickets = tickets.OrderByDescending(t => t.Status); break; default: tickets = tickets.OrderByDescending(t => new[] { t.CreatedAt, t.LastReply, t.UpdatedAt, t.LastStatusDate }.Max()); break; } ViewBag.Recent = TechnicalRequest.GetRecentTR(Convert.ToInt32(Session["userid"])); var ticketPreview = _ticketPreviewBusinessService.MakeFrom(tickets, Convert.ToInt32(Session["userid"])); List <InvolvedUser> submitter = new List <InvolvedUser>(); List <InvolvedUser> responders = new List <InvolvedUser>(); List <InvolvedUser> involvedUsers = new List <InvolvedUser>(); List <TicketResolution> Resolutions = new List <TicketResolution>(); if (ticketPreview != null) { foreach (var ticket in ticketPreview) { User submitterData = _userBusinessService.GetDetail(ticket.Submiter); ticket.IsEscalated = _ticketBs.IsEscalated(ticket.TicketId, Convert.ToInt32(Session["userid"])); TicketResolution resolution = _ticketResolutionBs.GetByTicket(ticket.TicketId); if (resolution != null) { TicketResolution resolutionObj = new TicketResolution() { TicketId = ticket.TicketId, Description = resolution.Description, CreatedAt = resolution.CreatedAt }; Resolutions.Add(resolutionObj); } else { TicketResolution resolutionObj = new TicketResolution() { TicketId = ticket.TicketId, Description = null, CreatedAt = null }; Resolutions.Add(resolutionObj); } if (submitterData != null) { InvolvedUser submitterUser = new InvolvedUser() { TicketNo = ticket.TicketNo, EmployeName = _userBusinessService.GetDetail(ticket.Submiter).Name }; submitter.Add(submitterUser); } else { InvolvedUser submitterUser = new InvolvedUser() { TicketNo = ticket.TicketNo, EmployeName = "" }; submitter.Add(submitterUser); } if (ticket.Responder != 0) { User responderData = _userBusinessService.GetDetail(ticket.Responder); if (responderData != null) { InvolvedUser responder = new InvolvedUser() { TicketNo = ticket.TicketNo, EmployeName = _userBusinessService.GetDetail(ticket.Responder).Name }; responders.Add(responder); } else { InvolvedUser responder = new InvolvedUser() { TicketNo = ticket.TicketNo, EmployeName = "" }; responders.Add(responder); } } else { if (ticket.Status != 1) { InvolvedUser responder = new InvolvedUser() { TicketNo = ticket.TicketNo, EmployeName = "TREND Admin" }; responders.Add(responder); } else { InvolvedUser responder = new InvolvedUser() { TicketNo = ticket.TicketNo, EmployeName = "" }; responders.Add(responder); } } var participants = _ticketParticipantBusinessService.GetByTicket(ticket.TicketId); if (participants != null) { foreach (var participantItem in participants) { var useCek = _userBusinessService.GetDetail(participantItem.UserId); if (useCek != null) { InvolvedUser participant = new InvolvedUser() { TicketNo = ticket.TicketNo, EmployeName = useCek.Name, UserId = useCek.UserId }; involvedUsers.Add(participant); } } } } } ViewBag.Resolutions = Resolutions; ViewBag.Submiters = submitter; ViewBag.Responders = responders; ViewBag.InvolvedUsers = involvedUsers; int pageSize = 10; int pageNumber = (page ?? 1); return(View("Index", ticketPreview.ToPagedList(pageNumber, pageSize))); } }
// GET: Admin/HelpDesk public ActionResult Index(int?page, String currentFilter, string sortOrder = "", String searchString = "") { if (Common.CheckAdmin()) { return(RedirectToAction("Login", "Default")); } ViewBag.CurrentSort = sortOrder; ViewBag.DateSortParm = String.IsNullOrEmpty(sortOrder) ? "DateDesc" : ""; ViewBag.TitleSortParm = sortOrder == "Title" ? "TitleDesc" : "Title"; ViewBag.StatusSortParm = sortOrder == "Status" ? "StatusDesc" : "Status"; var tickets = _ticketBusinessService.GetHelpDeskList(); switch (sortOrder) { case "DateDesc": tickets = tickets.OrderBy(s => s.CreatedAt); break; case "Title": tickets = tickets.OrderBy(t => t.Title); break; case "TitleDesc": tickets = tickets.OrderByDescending(t => t.Title); break; case "Status": tickets = tickets.OrderBy(t => t.Status); break; case "StatusDesc": tickets = tickets.OrderByDescending(t => t.Status); break; default: tickets = tickets.OrderByDescending(t => t.CreatedAt); break; } if (searchString != null) { page = 1; } else { searchString = currentFilter; } tickets = tickets.Where(ticket => ticket.Title.Contains(searchString) || ticket.TicketNo.Contains(searchString) ); var ticketPreview = _ticketPreviewBusinessService.MakeFrom(tickets, 0); List <InvolvedUser> submiters = new List <InvolvedUser>(); List <User> responders = new List <User>(); List <TicketResolution> ticketresolutions = new List <TicketResolution>(); List <TicketPreview> ratings = new List <TicketPreview>(); List <TicketPreview> ratingresponders = new List <TicketPreview>(); List <User> userData = new List <User>(); List <TicketPreview> userRoles = new List <TicketPreview>(); List <TicketNote> SubmiterNote = new List <TicketNote>(); List <TicketNote> ResponderNote = new List <TicketNote>(); if (ticketPreview != null) { foreach (var ticket in ticketPreview) { User submiterData = _userBusinessService.GetDetail(ticket.Submiter); TicketResolution resolutionData = _ticketResolutionBusinessService.GetByTicket(ticket.TicketId); Rating ratingData = _ratingBusinessService.GetRatingFromSubmiter(ticket.TicketId, ticket.Submiter); TicketNote noteSubmiter = _TicketNote.GetDatebyTicketandUserId(ticket.TicketId, ticket.Submiter); TicketDiscussion replySubmiter = _ticketDiscussionBs.GetDatebyTicketandUserId(ticket.TicketId, ticket.Submiter) == null ? null : _ticketDiscussionBs.GetDatebyTicketandUserId(ticket.TicketId, ticket.Submiter); TicketNote notesubmiter = new TicketNote() { TicketNoteId = ticket.TicketId, RespondTime = noteSubmiter == null ? null: noteSubmiter.RespondTime }; SubmiterNote.Add(notesubmiter); if (ratingData != null) { TicketPreview ratingdata = new TicketPreview() { TicketId = ticket.TicketId, ClosedDate = ratingData.CreatedAt, Rate = ratingData.Rate }; ratings.Add(ratingdata); } else { TicketPreview ratingdata = new TicketPreview() { TicketId = ticket.TicketId, ClosedDate = null, Rate = 0 }; ratings.Add(ratingdata); } if (resolutionData != null) { TicketResolution resolutiondata = new TicketResolution() { TicketId = ticket.TicketId, CreatedAt = resolutionData.CreatedAt }; ticketresolutions.Add(resolutiondata); } else { TicketResolution resolutiondata = new TicketResolution() { TicketId = ticket.TicketId, CreatedAt = null }; ticketresolutions.Add(resolutiondata); } if (submiterData != null) { if (submiterData.RoleId == 0) { TicketPreview userrole = new TicketPreview() { TicketNo = ticket.TicketNo, RoleName = "-" }; userRoles.Add(userrole); } else { TicketPreview userrole = new TicketPreview() { TicketNo = ticket.TicketNo, RoleName = _userRoleBusinessService.GetDetail(submiterData.RoleId).Name }; userRoles.Add(userrole); } InvolvedUser submiter = new InvolvedUser() { TicketNo = ticket.TicketNo, EmployeName = _userBusinessService.GetDetail(ticket.Submiter).Name, }; User userdata = new User() { Username = ticket.TicketNo, BranchName = submiterData.BranchName, AreaName = submiterData.AreaName, POH_Name = _EmployeeMasterBusinessService.GetDetail(submiterData.EmployeeId) == null ?"N/A" : _EmployeeMasterBusinessService.GetDetail(submiterData.EmployeeId).Business_Area }; userData.Add(userdata); submiters.Add(submiter); } else { TicketPreview userrole = new TicketPreview() { TicketNo = ticket.TicketNo, RoleName = "" }; InvolvedUser submiter = new InvolvedUser() { TicketNo = ticket.TicketNo, EmployeName = "" }; User userdata = new User() { Username = ticket.TicketNo, BranchName = "", AreaName = "" }; userData.Add(userdata); userRoles.Add(userrole); submiters.Add(submiter); } if (ticket.Responder != 0) { User responderData = _userBusinessService.GetDetail(ticket.Responder); Rating ratingDataResponder = _ratingBusinessService.GetRatingFromResponder(ticket.TicketId, ticket.Responder); TicketNote noteResponder = _TicketNote.GetDatebyTicketandUserId(ticket.TicketId, ticket.Responder); TicketDiscussion replyResponder = _ticketDiscussionBs.GetDatebyTicketandUserId(ticket.TicketId, ticket.Responder); TicketResolution ResolutionResponder = _ticketResolutionBusinessService.GetDatebyTicketandUserId(ticket.TicketId, ticket.Submiter); TicketNote noteresponder = new TicketNote() { TicketNoteId = ticket.TicketId, RespondTime = noteResponder == null ? null : noteResponder.RespondTime /* new double[] { noteSubmiter == null ? 0 : noteSubmiter.RespondTime, replySubmiter == null ? 0 : replySubmiter.RespondTime, ResolutionResponder == null ? 0 : ResolutionResponder.RespondTime }.Max()*/ }; ResponderNote.Add(noteresponder); if (responderData != null) { User responderdata = new User() { Username = ticket.TicketNo, Name = responderData.Name }; responders.Add(responderdata); } else { User responderdata = new User() { Username = ticket.TicketNo, Name = null }; responders.Add(responderdata); } if (ratingDataResponder != null) { TicketPreview ratingdataresponder = new TicketPreview() { TicketId = ticket.TicketId, ClosedDate = ratingDataResponder.CreatedAt, Rate = ratingDataResponder.Rate }; ratingresponders.Add(ratingdataresponder); } else { TicketPreview ratingdataresponder = new TicketPreview() { TicketId = ticket.TicketId, ClosedDate = null, Rate = 0 }; ratingresponders.Add(ratingdataresponder); } } else { TicketNote noteresponder = new TicketNote() { TicketNoteId = ticket.TicketId, RespondTime = null }; ResponderNote.Add(noteresponder); TicketPreview ratingdataresponder = new TicketPreview() { TicketId = ticket.TicketId, ClosedDate = null, Rate = 0 }; User responderdata = new User() { Username = ticket.TicketNo, Name = null }; responders.Add(responderdata); ratingresponders.Add(ratingdataresponder); } } } ViewBag.NoteSubmiter = SubmiterNote; ViewBag.NoteResponder = ResponderNote; ViewBag.Responders = responders; ViewBag.RatingResponders = ratingresponders; ViewBag.Rating = ratings; ViewBag.Resolution = ticketresolutions; ViewBag.UserData = userData; ViewBag.User = userRoles; ViewBag.Submiters = submiters; int pageSize = 999999999; int pageNumber = (page ?? 1); return(View(tickets.ToPagedList(pageNumber, pageSize))); }