Пример #1
0
        // 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)));
            }
        }
Пример #2
0
        // 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)));
        }