Example #1
0
        public ActionResult Index()
        {
            if (Common.CheckAdmin())
            {
                return(RedirectToAction("Login", "Default"));
            }
            ViewBag.DebugMode = DebugMode;


            if (DebugMode == false)
            {
                var                  ticketPreview     = _ticketBusinessService.GetQueryableSummary();
                List <User>          submiters         = new List <User>();
                List <TicketPreview> submitersRating   = new List <TicketPreview>();
                List <TicketPreview> responderRating   = new List <TicketPreview>();
                List <User>          responders        = new List <User>();
                List <TicketPreview> solvedDate        = new List <TicketPreview>();
                List <User>          EscalateData1     = new List <User>();
                List <User>          EscalateData2     = new List <User>();
                List <User>          EscalateData3     = new List <User>();
                List <TicketNote>    SubmiterNote      = new List <TicketNote>();
                List <TicketNote>    ResponderNote     = new List <TicketNote>();
                List <TicketNote>    EscalatedFromNote = new List <TicketNote>();
                List <TicketNote>    Escalated1Note    = new List <TicketNote>();
                List <TicketNote>    Escalated2Note    = new List <TicketNote>();
                List <TicketNote>    Escalated3Note    = new List <TicketNote>();
                if (ticketPreview != null)
                {
                    foreach (var ticket in ticketPreview)
                    {
                        User       submiterData       = _userBusinessService.GetDetail(ticket.Submiter);
                        Rating     ratingDataSubmiter = _ratingBusinessService.GetRatingFromSubmiter(ticket.TicketId, ticket.Submiter);
                        TicketNote noteSubmiter       = _ticketNoteBusinessService.GetDatebyTicketandUserId(ticket.TicketId, ticket.Submiter);

                        TicketNote notesubmiter = new TicketNote()
                        {
                            TicketNoteId = ticket.TicketId,
                            RespondTime  = noteSubmiter == null ? null : /*noteSubmiter.RespondTime*/ new string[] { noteSubmiter == null ? null : noteSubmiter.RespondTime, ratingDataSubmiter == null ? null : ratingDataSubmiter.RespondTime, }.Max()
                        };
                        SubmiterNote.Add(notesubmiter);

                        TicketNote noteResponder       = _ticketNoteBusinessService.GetDatebyTicketandUserId(ticket.TicketId, ticket.Responder);
                        Rating     ratingDataResponder = _ratingBusinessService.GetRatingFromResponder(ticket.TicketId, ticket.Responder);
                        TicketNote noteresponder       = new TicketNote()
                        {
                            TicketNoteId = ticket.TicketId,
                            RespondTime  = new string[] { noteResponder == null ? null : noteResponder.RespondTime, ratingDataResponder == null ? null : ratingDataResponder.RespondTime, }.Max()
                        };
                        ResponderNote.Add(noteresponder);

                        if (ratingDataSubmiter != null)
                        {
                            TicketPreview ratingdata = new TicketPreview()
                            {
                                TicketId   = ticket.TicketId,
                                ClosedDate = ratingDataSubmiter.CreatedAt,
                                Rate       = ratingDataSubmiter.Rate
                            };
                            submitersRating.Add(ratingdata);
                        }
                        else
                        {
                            TicketPreview ratingdata = new TicketPreview()
                            {
                                TicketId   = ticket.TicketId,
                                ClosedDate = null,
                                Rate       = 0
                            };
                            submitersRating.Add(ratingdata);
                        }
                        if (submiterData != null)
                        {
                            User submiter = new User()
                            {
                                UserId   = ticket.TicketId,
                                Name     = submiterData.Name,
                                AreaName = submiterData.AreaName,
                                POH_Name = _mstEmployeeBService.GetDetailbyUserName(submiterData.Username) == null ? null : _mstEmployeeBService.GetDetailbyUserName(submiterData.Username).Business_Area
                            };
                            submiters.Add(submiter);
                        }
                        else
                        {
                            User submiter = new User()
                            {
                                UserId   = ticket.TicketId,
                                Name     = "",
                                AreaName = "",
                                POH_Name = ""
                            };
                            submiters.Add(submiter);
                        }

                        if (ticket.Responder != 0)
                        {
                            User             responderData   = _userBusinessService.GetDetail(ticket.Responder);
                            TicketResolution SolvedDateData  = _ticketResolutionBusinessService.GetByTicket(ticket.TicketId);
                            Rating           ratingresponder = _ratingBusinessService.GetRatingFromSubmiter(ticket.TicketId, ticket.Submiter);

                            int[] escalateId = new int[4] {
                                0, 0, 0, 0
                            };
                            int i = 0;
                            foreach (var item in _ticketBusinessService.getlistIdEscalatedbyTicket(ticket.TicketId))
                            {
                                escalateId[i] = item;
                            }
                            EscalateLog escalateData  = escalateId[0] == 0 ? null : _ticketBusinessService.getEscalatedDetail(escalateId[0]);
                            EscalateLog escalateData2 = escalateId[1] == 0 ? null : _ticketBusinessService.getEscalatedDetail(escalateId[1]);
                            EscalateLog escalateData3 = escalateId[2] == 0 ? null : _ticketBusinessService.getEscalatedDetail(escalateId[2]);
                            if (responderData != null)
                            {
                                User responder = new User()
                                {
                                    UserId   = ticket.TicketId,
                                    Name     = responderData.Name,
                                    AreaName = responderData.AreaName,
                                    POH_Name = responderData.EmployeeId == 0 ? null : _mstEmployeeBService.GetDetail(responderData.EmployeeId).Business_Area,
                                };

                                responders.Add(responder);
                            }
                            else
                            {
                                User responder = new User()
                                {
                                    UserId   = ticket.TicketId,
                                    Name     = "",
                                    AreaName = "",
                                    POH_Name = ""
                                };

                                responders.Add(responder);
                            }

                            if (SolvedDateData != null)
                            {
                                TicketPreview solveddate = new TicketPreview()
                                {
                                    TicketNo    = ticket.TicketNo,
                                    Description = SolvedDateData.Description,
                                    SolvedDate  = SolvedDateData.CreatedAt
                                };
                                solvedDate.Add(solveddate);
                            }
                            else
                            {
                                TicketPreview solveddate = new TicketPreview()
                                {
                                    TicketNo    = ticket.TicketNo,
                                    Description = null,
                                    SolvedDate  = null
                                };
                                solvedDate.Add(solveddate);
                            }

                            if (ratingresponder != null)
                            {
                                TicketPreview rateResponder = new TicketPreview()
                                {
                                    TicketId    = ticket.TicketId,
                                    Rate        = ratingresponder.Rate,
                                    Description = ratingresponder.Description
                                };
                                responderRating.Add(rateResponder);
                            }
                            else
                            {
                                TicketPreview rateResponder = new TicketPreview()
                                {
                                    TicketId    = ticket.TicketId,
                                    Rate        = 0,
                                    Description = null
                                };
                                responderRating.Add(rateResponder);
                            }

                            if (escalateData != null)
                            {
                                User userEscalate1 = new User()
                                {
                                    UserId   = ticket.TicketId,
                                    Name     = _userBusinessService.GetDetail(escalateData.EscalateTo).Name,
                                    AreaName = _userBusinessService.GetDetail(escalateData.EscalateTo).AreaName == null ? "HEAD OFFICE" : _userBusinessService.GetDetail(escalateData.EscalateTo).AreaName,

                                    Position = _mstEmployeeBService.GetDetail(_userBusinessService.GetDetail(escalateData.EscalateTo).EmployeeId) == null ? null : _mstEmployeeBService.GetDetail(_userBusinessService.GetDetail(escalateData.EscalateTo).EmployeeId).Business_Area,

                                    Username   = _userBusinessService.GetDetail(escalateData.EscalateFrom).Name,
                                    BranchName = _userBusinessService.GetDetail(escalateData.EscalateFrom).AreaName == null ? "HEAD OFFICE" : _userBusinessService.GetDetail(escalateData.EscalateFrom).AreaName,
                                    POH_Name   = _mstEmployeeBService.GetDetail(_userBusinessService.GetDetail(escalateData.EscalateFrom).EmployeeId) == null ? null : _mstEmployeeBService.GetDetail(_userBusinessService.GetDetail(escalateData.EscalateFrom).EmployeeId).Business_Area,
                                };
                                EscalateData1.Add(userEscalate1);

                                TicketDiscussion replyEsFrom      = _ticketDiscussionBusinessService.GetDatebyTicketandUserId(ticket.TicketId, escalateData.EscalateFrom);
                                TicketResolution ResolutionEsFrom = _ticketResolutionBusinessService.GetDatebyTicketandUserId(ticket.TicketId, escalateData.EscalateFrom);
                                TicketNote       noteEsFrom       = _ticketNoteBusinessService.GetDatebyTicketandUserId(ticket.TicketId, escalateData.EscalateFrom);
                                TicketNote       noteesFrom       = new TicketNote()
                                {
                                    TicketNoteId = ticket.TicketId,
                                    RespondTime  = noteEsFrom == null ? null : noteEsFrom.RespondTime /* new double[] { noteResponder == null ? 0 : noteResponder.RespondTime, replySubmiter == null ? 0 : replySubmiter.RespondTime, ResolutionResponder == null ? 0 : ResolutionResponder.RespondTime }.Max()*/
                                };
                                EscalatedFromNote.Add(noteesFrom);

                                TicketDiscussion replyEs1      = _ticketDiscussionBusinessService.GetDatebyTicketandUserId(ticket.TicketId, escalateData.EscalateTo);
                                TicketResolution ResolutionEs1 = _ticketResolutionBusinessService.GetDatebyTicketandUserId(ticket.TicketId, escalateData.EscalateTo);
                                TicketNote       noteEs1       = _ticketNoteBusinessService.GetDatebyTicketandUserId(ticket.TicketId, escalateData.EscalateTo);
                                TicketNote       notees1       = new TicketNote()
                                {
                                    TicketNoteId = ticket.TicketId,
                                    RespondTime  = noteEs1 == null ? null : noteEs1.RespondTime /*new double[] { noteResponder == null ? 0 : noteResponder.RespondTime, replySubmiter == null ? 0 : replySubmiter.RespondTime, ResolutionResponder == null ? 0 : ResolutionResponder.RespondTime }.Max()*/
                                };
                                Escalated1Note.Add(notees1);
                            }
                            else
                            {
                                User userEscalate1 = new User()
                                {
                                    UserId     = ticket.TicketId,
                                    Name       = null,
                                    AreaName   = null,
                                    Username   = null,
                                    POH_Name   = null,
                                    BranchName = null,
                                    Position   = null
                                };
                                EscalateData1.Add(userEscalate1);
                                TicketNote noteesFrom = new TicketNote()
                                {
                                    TicketNoteId = ticket.TicketId,
                                    RespondTime  = null
                                };
                                EscalatedFromNote.Add(noteesFrom);
                                TicketNote notees1 = new TicketNote()
                                {
                                    TicketNoteId = ticket.TicketId,
                                    RespondTime  = null
                                };
                                Escalated1Note.Add(notees1);
                            }
                            if (escalateData2 != null)
                            {
                                User userEscalate2 = new User()
                                {
                                    UserId   = ticket.TicketId,
                                    Name     = _userBusinessService.GetDetail(escalateData2.EscalateTo).Name,
                                    AreaName = _userBusinessService.GetDetail(escalateData2.EscalateTo).AreaName == null ? "HEAD OFFICE" : _userBusinessService.GetDetail(escalateData2.EscalateTo).AreaName,
                                    POH_Name = _mstEmployeeBService.GetDetail(_userBusinessService.GetDetail(escalateData2.EscalateTo).EmployeeId) == null ? null : _mstEmployeeBService.GetDetail(_userBusinessService.GetDetail(escalateData2.EscalateTo).EmployeeId).Business_Area,
                                };
                                EscalateData2.Add(userEscalate2);
                                TicketDiscussion replyEs2      = _ticketDiscussionBusinessService.GetDatebyTicketandUserId(ticket.TicketId, escalateData2.EscalateTo);
                                TicketResolution ResolutionEs2 = _ticketResolutionBusinessService.GetDatebyTicketandUserId(ticket.TicketId, escalateData2.EscalateTo);
                                TicketNote       noteEs2       = _ticketNoteBusinessService.GetDatebyTicketandUserId(ticket.TicketId, escalateData2.EscalateTo);
                                TicketNote       notees2       = new TicketNote()
                                {
                                    TicketNoteId = ticket.TicketId,
                                    RespondTime  = noteEs2 == null ? null : noteEs2.RespondTime/* new double[] { noteResponder == null ? 0 : noteResponder.RespondTime, replySubmiter == null ? 0 : replySubmiter.RespondTime, ResolutionResponder == null ? 0 : ResolutionResponder.RespondTime }.Max()*/
                                };
                                Escalated2Note.Add(notees2);
                            }
                            else
                            {
                                User userEscalate2 = new User()
                                {
                                    UserId   = ticket.TicketId,
                                    Name     = null,
                                    AreaName = null,
                                    POH_Name = null
                                };
                                EscalateData2.Add(userEscalate2);
                                TicketNote notees2 = new TicketNote()
                                {
                                    TicketNoteId = ticket.TicketId,
                                    RespondTime  = null
                                };
                                Escalated2Note.Add(notees2);
                            }
                            if (escalateData3 != null)
                            {
                                User userEscalate3 = new User()
                                {
                                    UserId   = ticket.TicketId,
                                    Name     = _userBusinessService.GetDetail(escalateData3.EscalateTo).Name,
                                    AreaName = _userBusinessService.GetDetail(escalateData3.EscalateTo).AreaName == null ? "HEAD OFFICE" : _userBusinessService.GetDetail(escalateData3.EscalateTo).AreaName,
                                    POH_Name = _mstEmployeeBService.GetDetail(_userBusinessService.GetDetail(escalateData3.EscalateTo).EmployeeId) == null ? null : _mstEmployeeBService.GetDetail(_userBusinessService.GetDetail(escalateData3.EscalateTo).EmployeeId).Business_Area,
                                };
                                EscalateData3.Add(userEscalate3);
                                TicketDiscussion replyEs3      = _ticketDiscussionBusinessService.GetDatebyTicketandUserId(ticket.TicketId, escalateData3.EscalateTo);
                                TicketResolution ResolutionEs3 = _ticketResolutionBusinessService.GetDatebyTicketandUserId(ticket.TicketId, escalateData3.EscalateTo);
                                TicketNote       noteEs3       = _ticketNoteBusinessService.GetDatebyTicketandUserId(ticket.TicketId, escalateData3.EscalateTo);
                                TicketNote       notees3       = new TicketNote()
                                {
                                    TicketNoteId = ticket.TicketId,
                                    RespondTime  = noteEs3 == null ? null : noteEs3.RespondTime/*new double[] { noteResponder == null ? 0 : noteResponder.RespondTime, replySubmiter == null ? 0 : replySubmiter.RespondTime, ResolutionResponder == null ? 0 : ResolutionResponder.RespondTime }.Max()*/
                                };
                                Escalated3Note.Add(notees3);
                            }
                            else
                            {
                                User userEscalate3 = new User()
                                {
                                    UserId   = ticket.TicketId,
                                    Name     = null,
                                    AreaName = null,
                                    POH_Name = null
                                };
                                EscalateData3.Add(userEscalate3);
                                TicketNote notees3 = new TicketNote()
                                {
                                    TicketNoteId = ticket.TicketId,
                                    RespondTime  = null
                                };
                                Escalated3Note.Add(notees3);
                            }
                        }
                        else
                        {
                            TicketNote noteres = new TicketNote()
                            {
                                TicketNoteId = ticket.TicketId,
                                RespondTime  = null
                            };
                            ResponderNote.Add(noteres);
                            TicketNote noteesFrom = new TicketNote()
                            {
                                TicketNoteId = ticket.TicketId,
                                RespondTime  = null
                            };
                            EscalatedFromNote.Add(noteesFrom);
                            TicketNote notees1 = new TicketNote()
                            {
                                TicketNoteId = ticket.TicketId,
                                RespondTime  = null
                            };
                            Escalated1Note.Add(notees1);
                            TicketNote notees2 = new TicketNote()
                            {
                                TicketNoteId = ticket.TicketId,
                                RespondTime  = null
                            };
                            Escalated2Note.Add(notees2);
                            TicketNote notees3 = new TicketNote()
                            {
                                TicketNoteId = ticket.TicketId,
                                RespondTime  = null
                            };
                            Escalated3Note.Add(notees3);

                            EscalatedFromNote.Add(noteesFrom);
                            if (ticket.Status != 1)
                            {
                                User responder = new User()
                                {
                                    UserId   = ticket.TicketId,
                                    Name     = "TREND Admin",
                                    AreaName = "-",
                                    POH_Name = "-"
                                };
                                TicketPreview solveddate = new TicketPreview()
                                {
                                    TicketNo    = ticket.TicketNo,
                                    Description = null,
                                    SolvedDate  = null
                                };
                                TicketPreview rateResponder = new TicketPreview()
                                {
                                    TicketId    = ticket.TicketId,
                                    Rate        = 0,
                                    Description = null
                                };
                                User userEscalate1 = new User()
                                {
                                    UserId     = ticket.TicketId,
                                    Name       = null,
                                    AreaName   = null,
                                    Username   = null,
                                    BranchName = null,
                                    POH_Name   = null,
                                    Position   = null
                                };
                                User userEscalate2 = new User()
                                {
                                    UserId   = ticket.TicketId,
                                    Name     = null,
                                    AreaName = null
                                };
                                User userEscalate3 = new User()
                                {
                                    UserId   = ticket.TicketId,
                                    Name     = null,
                                    AreaName = null
                                };
                                EscalateData1.Add(userEscalate1);
                                EscalateData2.Add(userEscalate2);
                                EscalateData3.Add(userEscalate3);
                                responderRating.Add(rateResponder);
                                solvedDate.Add(solveddate);
                                responders.Add(responder);
                            }
                            else
                            {
                                User responder = new User()
                                {
                                    UserId   = ticket.TicketId,
                                    Name     = "",
                                    AreaName = "",
                                    POH_Name = ""
                                };
                                TicketPreview solveddate = new TicketPreview()
                                {
                                    TicketNo    = ticket.TicketNo,
                                    Description = null,
                                    SolvedDate  = null
                                };
                                TicketPreview rateResponder = new TicketPreview()
                                {
                                    TicketId    = ticket.TicketId,
                                    Rate        = 0,
                                    Description = null
                                };
                                User userEscalate1 = new User()
                                {
                                    UserId     = ticket.TicketId,
                                    Name       = null,
                                    AreaName   = null,
                                    Username   = null,
                                    POH_Name   = null,
                                    BranchName = null,
                                    Position   = null
                                };
                                User userEscalate2 = new User()
                                {
                                    UserId   = ticket.TicketId,
                                    Name     = null,
                                    AreaName = null,
                                    POH_Name = null
                                };
                                User userEscalate3 = new User()
                                {
                                    UserId   = ticket.TicketId,
                                    Name     = null,
                                    AreaName = null,
                                    POH_Name = null
                                };
                                EscalateData1.Add(userEscalate1);
                                EscalateData2.Add(userEscalate2);
                                EscalateData3.Add(userEscalate3);
                                responderRating.Add(rateResponder);
                                solvedDate.Add(solveddate);
                                responders.Add(responder);
                            }
                        }
                    }
                }
                ViewBag.RespondEsFrom    = EscalatedFromNote;
                ViewBag.RespondEs1       = Escalated1Note;
                ViewBag.RespondEs2       = Escalated2Note;
                ViewBag.RespondEs3       = Escalated3Note;
                ViewBag.NoteSubmiter     = SubmiterNote;
                ViewBag.NoteResponder    = ResponderNote;
                ViewBag.EscalatedLog1    = EscalateData1;
                ViewBag.EscalatedLog2    = EscalateData2;
                ViewBag.EscalatedLog3    = EscalateData3;
                ViewBag.RatingSubmiters  = submitersRating;
                ViewBag.RatingResponders = responderRating;
                ViewBag.SolvedDate       = solvedDate;
                ViewBag.Submiters        = submiters;
                ViewBag.Responders       = responders;

                return(View(ticketPreview.ToList()));
            }
            else
            {
                return(View());
            }
        }
Example #2
0
        public IHttpActionResult PostDiscussion()
        {
            if (!Common.GetAuthorization(Request))
            {
                return(Ok(new { Code = 401, Message = "Unauthorization" }));
            }
            if (ModelState.IsValid)
            {
                var user = _userBusinessService.GetByToken(Request.Headers.GetValues("AccessToken").First());

                if (user != null)
                {
                    string   msg                = HttpContext.Current.Request.Params.Get("Description");
                    int      typeMsg            = int.Parse(HttpContext.Current.Request.Params.Get("Type"));
                    int      ticketId           = int.Parse(HttpContext.Current.Request.Params.Get("TicketId"));
                    int      ticketDiscussionId = 0;
                    int      ticketNoteId       = 0;
                    DateTime dateTimeNow        = DateTime.Now;
                    Ticket   ticket             = _ticketBusinessService.GetDetail(ticketId);
                    User     userData           = _userBusinessService.GetDetail(int.Parse(HttpContext.Current.Request.Params.Get("UserId")));
                    var      dataUid            = new List <int>();
                    var      playerid           = new List <string>();
                    var      participants       = _ticketParcipantBusinessService.GetByTicket(ticketId);

                    TimeSpan respond = ticket.LastReply == null ? (DateTime.Now.Subtract(ticket.CreatedAt.Value)) : (DateTime.Now.Subtract(ticket.LastReply.Value));
                    if (typeMsg == 1)
                    {
                        TicketDiscussion ticketDiscussion = new TicketDiscussion()
                        {
                            TicketId     = ticketId,
                            CreatedAt    = dateTimeNow,
                            UserId       = int.Parse(HttpContext.Current.Request.Params.Get("UserId")),
                            Description  = msg,
                            TicketNoteId = 0,// -> new comment don't have note
                            Status       = 1,
                            RespondTime  = (respond.Days < 1 ? "" : respond.Days.ToString() + ". ") + respond.Hours.ToString() + ":" + respond.Minutes.ToString() + ":" + respond.Seconds.ToString()
                        };
                        foreach (var i in participants)
                        {
                            dataUid.Add(i.UserId);
                        }
                        var iduserdevice = _ticketParcipantBusinessService.Getuserdeviceforasnote(dataUid);
                        foreach (var p in iduserdevice)
                        {
                            playerid.Add(p.PlayerId);
                        }
                        playerid.Add(_userBusinessService.GetDetail(ticket.Responder).PlayerId);
                        playerid.Add(_userBusinessService.GetDetail(ticket.Submiter).PlayerId);

                        title   = ticket.TicketNo + " - " + ticket.Title + " - Reply";
                        content = userData.Name + (ticket.Submiter == userData.UserId ? " (Submiter)" : ticket.Responder == userData.UserId ? " (Responder)" : " (Participant)") + " : " + msg;
                        Onesignal.PushNotif(content, playerid, title, ticketId, ticket.TicketNo, ticket.TicketCategoryId, ticket.Description);
                        ticketDiscussionId = _ticketDiscussionBusinessService.Add(ticketDiscussion).TicketDiscussionId;
                    }
                    else if (typeMsg == 2)
                    {
                        TicketNote ticketNote = new TicketNote()
                        {
                            TicketId    = ticketId,
                            CreatedAt   = dateTimeNow,
                            UserId      = int.Parse(HttpContext.Current.Request.Params.Get("UserId")),
                            Description = msg,
                            Status      = 1,
                            RespondTime = (respond.Days < 1 ? "" : respond.Days.ToString() + ". ") + respond.Hours.ToString() + ":" + respond.Minutes.ToString() + ":" + respond.Seconds.ToString()
                        };
                        foreach (var i in participants)
                        {
                            dataUid.Add(i.UserId);
                        }
                        var iduserdevice = _ticketParcipantBusinessService.Getuserdeviceforasnote(dataUid);
                        foreach (var p in iduserdevice)
                        {
                            playerid.Add(p.PlayerId);
                        }
                        playerid.Add(_userBusinessService.GetDetail(ticket.Responder).PlayerId);
                        playerid.Add(_userBusinessService.GetDetail(ticket.Submiter).PlayerId);

                        title   = ticket.TicketNo + " - " + ticket.Title + " - Reply As Note";
                        content = userData.Name + (ticket.Submiter == userData.UserId ? " (Submiter)" : " (Responder)") + " : " + msg;
                        Onesignal.PushNotif(content, playerid, title, ticketId, ticket.TicketNo, ticket.TicketCategoryId, ticket.Description);

                        ticketNoteId = _ticketNoteBusinessService.Add(ticketNote).TicketNoteId;
                        _ticketDiscussionBusinessService.SetNote(ticketId, ticketNoteId);
                    }

                    if (HttpContext.Current.Request.Files.Count > 0)
                    {
                        for (int i = 0, iLen = HttpContext.Current.Request.Files.Count; i < iLen; i++)
                        {
                            string dateString = DateTime.Now.ToString("yyyyMMddHmmss");
                            var    postedFile = HttpContext.Current.Request.Files[i];

                            switch (typeMsg)
                            {
                            case 1:    // -> Comment
                                var fileName = Path.GetFileName(postedFile.FileName);
                                var path     = Path.Combine(HttpContext.Current.Server.MapPath("~/Upload/Discussion/"), fileName);
                                postedFile.SaveAs(path);
                                DiscussionAttachment discussionAttachment = new DiscussionAttachment()
                                {
                                    TicketDiscussionId = ticketDiscussionId,
                                    Name   = fileName,
                                    Status = 1
                                };

                                _discussionAttachmentBusinessService.Add(discussionAttachment);
                                break;

                            default:    // -> Note
                                var fileNameNote = Path.GetFileName(postedFile.FileName);
                                var pathNote     = Path.Combine(HttpContext.Current.Server.MapPath("~/Upload/Note/"), fileNameNote);
                                postedFile.SaveAs(pathNote);
                                NoteAttachment noteAttachment = new NoteAttachment()
                                {
                                    TicketNoteId = ticketNoteId,
                                    Name         = fileNameNote,
                                    Status       = 1
                                };

                                _noteAttachmentBusinessService.Add(noteAttachment);
                                break;
                            }
                        }
                    }

                    List <ApiJsonCommentTR> apiJsonCommentTrList = new List <ApiJsonCommentTR>();

                    ApiJsonCommentDateTR apiJsonCommentDateTr = new ApiJsonCommentDateTR()
                    {
                        day  = dateTimeNow.ToString("dddd, dd MMMM yyyy"),
                        time = dateTimeNow.ToString("hh:mm")
                    };

                    ApiJsonCommentSenderTR apiJsonCommentSenderTr = new ApiJsonCommentSenderTR()
                    {
                        name        = _userBusinessService.GetDetail(int.Parse(HttpContext.Current.Request.Params.Get("UserId"))).Name,
                        is_verified = true
                    };

                    if (ticket.Responder == int.Parse(HttpContext.Current.Request.Params.Get("UserId")))
                    {
                        apiJsonCommentSenderTr.type = "Responder";
                        if (typeMsg == 1)
                        {
                            ticket.LastReply = dateTimeNow;
                            Ticket           = _ticketBusinessService.Edit(ticket);
                        }
                        else if (typeMsg == 2)
                        {
                            ticket.NextCommenter  = ticket.Submiter;
                            ticket.LastStatusDate = dateTimeNow;
                            ticket.LastReply      = dateTimeNow;
                            ticket.DueDateAnswer  = dateTimeNow.AddDays(Common.NumberOfWorkDays(dateTimeNow, WebConfigure.GetRulesDay()));
                            Ticket = _ticketBusinessService.Edit(ticket);
                        }
                    }
                    else
                    {
                        if (ticket.Submiter == int.Parse(HttpContext.Current.Request.Params.Get("UserId")))
                        {
                            apiJsonCommentSenderTr.type = "Submitter";
                            if (typeMsg == 1)
                            {
                                ticket.LastReply = dateTimeNow;
                                Ticket           = _ticketBusinessService.Edit(ticket);
                            }
                            else if (typeMsg == 2)
                            {
                                ticket.LastStatusDate = dateTimeNow;
                                ticket.LastReply      = dateTimeNow;
                                ticket.NextCommenter  = ticket.Responder;
                                ticket.DueDateAnswer  = DateTime.Now.AddDays(Common.NumberOfWorkDays(DateTime.Now, WebConfigure.GetRulesDay()));
                                Ticket = _ticketBusinessService.Edit(ticket);
                            }
                        }
                        else
                        {
                            apiJsonCommentSenderTr.type = "Participant";
                            ticket.LastReply            = dateTimeNow;
                            Ticket = _ticketBusinessService.Edit(ticket);
                        }
                    }

                    List <ApiJsonCommentImageTR> listAttachment = new List <ApiJsonCommentImageTR>();

                    var    attachments     = _discussionAttachmentBusinessService.GetByDiscussionId(ticketDiscussionId);
                    string attachmentsPath = System.Web.HttpContext.Current.Server.MapPath("~/Upload/Discussion/");

                    if (typeMsg == 2)
                    {
                        attachments     = _noteAttachmentBusinessService.GetByNoteId(ticketNoteId);
                        attachmentsPath = System.Web.HttpContext.Current.Server.MapPath("~/Upload/Note/");
                    }

                    if (attachments != null)
                    {
                        foreach (var attachment in attachments)
                        {
                            listAttachment.Add(new ApiJsonCommentImageTR {
                                src  = WebConfigure.GetDomain() + "/Upload/TechnicalRequestAttachments/" + attachment.Name,
                                Type = Path.GetExtension(attachment.Name),
                                nama = attachment.Name
                            });
                        }
                    }

                    ApiJsonCommentTR apiJsonCommentTr = new ApiJsonCommentTR()
                    {
                        date   = apiJsonCommentDateTr,
                        sender = apiJsonCommentSenderTr,
                        text   = msg,
                        image  = listAttachment
                    };

                    switch (typeMsg)
                    {
                    case 1:
                        apiJsonCommentTr.type = "sent";
                        break;

                    default:
                        apiJsonCommentTr.type = "notes";
                        break;
                    }

                    apiJsonCommentTrList.Add(apiJsonCommentTr);

                    ApiJsonStatus apiJsonStatus = new ApiJsonStatus()
                    {
                        code    = 200,
                        message = "ok"
                    };
                    if (typeMsg != 1)
                    {
                        if (ticket.TicketCategoryId != 9)
                        {
                            Email.GetEmailTagTsicsCommentTR(ticket);
                            Email.GetEmailTagTsicsCommentTR(ticket, true);
                        }
                        else
                        {
                            Email.GetEmailTagTsicsCommentHelpDesk(ticketId, user.UserId, false);
                            Email.GetEmailTagTsicsCommentHelpDesk(ticketId, user.UserId, true);
                        }
                    }
                    return(Json(new { status = apiJsonStatus, data = apiJsonCommentTrList }));
                }
                else
                {
                    _webStatus.code        = 403;
                    _webStatus.description = "Invalid AccessToken";

                    return(Ok(new { status = _webStatus, result = new object() }));
                }
            }
            return(BadRequest(ModelState));
        }
Example #3
0
        public IHttpActionResult PostApiJsonCommentTr(FormCollection formCollection)
        {
            string msg      = formCollection["comment-text"];
            int    typeMsg  = Convert.ToInt32(formCollection["chat-type"]);
            int    ticketId = Convert.ToInt32(formCollection["TicketId"]);
            int    uid      = Convert.ToInt32(formCollection["userid"]);

            Ticket ticket = _ticketBs.GetDetail(ticketId);

            if (typeMsg == 1)
            {
                TicketDiscussion discussion = Factory.Create <TicketDiscussion>("TicketDiscussion", ClassType.clsTypeDataModel);
                discussion.TicketId    = ticketId;
                discussion.CreatedAt   = DateTime.Now;
                discussion.UserId      = uid;
                discussion.Description = msg;
                discussion.Status      = 1;

                _ticketDiscussionBusinessService.Add(discussion);
            }
            else if (typeMsg == 2)
            {
                TicketNote note = Factory.Create <TicketNote>("TicketNote", ClassType.clsTypeDataModel);
                note.TicketId    = ticketId;
                note.CreatedAt   = DateTime.Now;
                note.UserId      = uid;
                note.Description = msg;
                note.Status      = 1;

                _ticketNoteBusinessService.Add(note);
            }

            List <ApiJsonCommentTR> apiJsonCommentTrml = new List <ApiJsonCommentTR>();
            ApiJsonCommentTR        apiJsonCommentTrm  = Factory.Create <ApiJsonCommentTR>("ApiJsonCommentTR", ClassType.clsTypeDataModel);

            apiJsonCommentTrm.type = "sent";

            //ApiJsonCommentTRM.date.day = item.CreatedAt?.ToString("dd MMM yyyy");
            //ApiJsonCommentTRM.date.time = item.CreatedAt?.ToString("hh:mm");
            //ApiJsonCommentTRM.sender.name = item.UserId.ToString();
            apiJsonCommentTrm.text        = msg;
            apiJsonCommentTrm.image       = null;
            apiJsonCommentTrm.isRemovable = (ticket.Responder == uid);

            apiJsonCommentTrml.Add(apiJsonCommentTrm);
            ApiJsonStatus apiJsonStatusM = Factory.Create <ApiJsonStatus>("ApiJsonStatus", ClassType.clsTypeDataModel);


            apiJsonStatusM.code    = 200;
            apiJsonStatusM.message = "ok";

            return(Ok(new { status = apiJsonStatusM, data = apiJsonCommentTrml }));

            //if (Request.Files.Count > 0)
            //{
            //    TicketAttachmentBusinessService ticketAttachmentBS = Factory.Create<TicketAttachmentBusinessService>("TicketAttachment", ClassType.clsTypeBusinessService);
            //    TicketAttachment ticketAttachment = Factory.Create<TicketAttachment>("TicketAttachment", ClassType.clsTypeDataModel);

            //    for (int i = 0, iLen = Request.Files.Count; i < iLen; i++)
            //    {
            //        var file = Request.Files[i];
            //        string response = Common.ValidateFileUpload(file);

            //        if (response.Equals("true"))
            //        {
            //            ticketAttachment.TicketId = TicketId;
            //            ticketAttachment.Name = Common.UploadFile(file, ticketAddResult.TicketNo + "-" + i.ToString());
            //            ticketAttachment.Status = 1;

            //            ticketAttachmentBS.Add(ticketAttachment);
            //        }
            //        else
            //        {
            //            Console.WriteLine(GetType().FullName + "." + MethodInfo.GetCurrentMethod().Name, response);
            //        }
            //    }
            //}
        }
Example #4
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)));
        }