Ejemplo n.º 1
0
        public void CreateDeleteTicketPosts()
        {
            DepartmentCollection depts           = TestSetup.KayakoApiService.Departments.GetDepartments();
            StaffUserCollection  staff           = TestSetup.KayakoApiService.Staff.GetStaffUsers();
            StaffUser            randomStaffUser = staff[new Random().Next(staff.Count)];
            TicketCollection     tickets         = TestSetup.KayakoApiService.Tickets.GetTickets(depts.Select(d => d.Id).ToArray());
            Ticket randomTicket = tickets[new Random().Next(tickets.Count)];

            string contents = "This will be the contents";

            TicketNoteRequest request = new TicketNoteRequest()
            {
                TicketId   = randomTicket.Id,
                Content    = contents,
                StaffId    = randomStaffUser.Id,
                ForStaffId = randomStaffUser.Id,
                NoteColor  = NoteColor.Purple
            };

            TicketNote createdNote = TestSetup.KayakoApiService.Tickets.AddTicketNote(request);

            Assert.IsNotNull(createdNote);
            Assert.AreEqual(createdNote.Content, contents);
            Assert.AreEqual(createdNote.ForStaffId, randomStaffUser.Id);
            //Assert.AreEqual(createdNote.CreatorStaffId, randomStaffUser.Id);
            Assert.AreEqual(createdNote.NoteColor, NoteColor.Purple);
            Assert.AreEqual(createdNote.TicketId, randomTicket.Id);

            bool success = TestSetup.KayakoApiService.Tickets.DeleteTicketNote(randomTicket.Id, createdNote.Id);

            Assert.IsTrue(success);
        }
 private void GroupBox_IsVisibleChanged_1(object sender, System.Windows.DependencyPropertyChangedEventArgs e)
 {
     if (((Control)sender).IsVisible)
     {
         TicketNote.BackgroundFocus();
     }
 }
Ejemplo n.º 3
0
 public void Properties_AfterConstruction_AreExpectedValues(TicketNote note)
 {
     inputNote = note;
     RecreateSystemUnderTest();
     Assert.That(SystemUnderTest.Created, Is.EqualTo(note.Created));
     Assert.That(SystemUnderTest.Note, Is.EqualTo(note.Note));
     Assert.That(SystemUnderTest.TicketId, Is.EqualTo(note.TicketId));
 }
Ejemplo n.º 4
0
        public static void CompareTicketNote(TicketNote one, TicketNote two)
        {
            Assert.AreEqual(one.Content, two.Content);
            Assert.AreEqual(one.CreationDate, two.CreationDate);
            Assert.AreEqual(one.CreatorStaffId, two.CreatorStaffId);
            Assert.AreEqual(one.CreatorStaffName, two.CreatorStaffName);
            Assert.AreEqual(one.ForStaffId, two.ForStaffId);
            Assert.AreEqual(one.Id, two.Id);
            Assert.AreEqual(one.NoteColor, two.NoteColor);
            Assert.AreEqual(one.TicketId, two.TicketId);
            Assert.AreEqual(one.Type, two.Type);

            AssertObjectXmlEqual <TicketNote>(one, two);
        }
Ejemplo n.º 5
0
        public void GetTicketNote()
        {
            DepartmentCollection depts   = TestSetup.KayakoApiService.Departments.GetDepartments();
            TicketCollection     tickets = TestSetup.KayakoApiService.Tickets.GetTickets(depts.Select(d => d.Id).ToArray());
            Ticket randomTicket          = tickets[new Random().Next(tickets.Count)];

            TicketNoteCollection notes = TestSetup.KayakoApiService.Tickets.GetTicketNotes(randomTicket.Id);

            Assert.IsNotNull(notes, "No ticket notes were returned for ticket id " + randomTicket.Id);
            Assert.IsNotEmpty(notes, "No ticket notes were returned for ticket id " + randomTicket.Id);

            TicketNote randomTicketNoteToGet = notes[new Random().Next(notes.Count)];

            Trace.WriteLine("GetTicketNote using ticket note id: " + randomTicketNoteToGet.Id);

            TicketNote ticketNote = TestSetup.KayakoApiService.Tickets.GetTicketNote(randomTicket.Id, randomTicketNoteToGet.Id);

            CompareTicketNote(ticketNote, randomTicketNoteToGet);
        }
Ejemplo n.º 6
0
        public ActionResult AddNewServiceTicket(ServiceTicketModel model)
        {
            List <TicketNote> note = new List <TicketNote>();

            if (model.Notes.Trim() != "" && model.Notes != null)
            {
                TicketNote noteModel = new TicketNote();
                noteModel.ContactId   = Convert.ToInt32(model.ContactId);
                noteModel.DateCreated = System.DateTime.Now;
                noteModel.NoteText    = model.Notes;
                noteModel.Id          = 0;

                note.Add(noteModel);
            }
            HomeController ctlObj    = new HomeController();
            int            ContactID = ctlObj.GetContactsId(model.contactno);

            var companydetail = ctlObj.GetCompanyDetailsViaId((int)model.CompanyId);

            ServiceTicket serviceTicket = new ServiceTicket();

            serviceTicket.CompanyId = model.CompanyId;
            //  serviceTicket.CompanyIdentifier = companydetail.CompanyIdentifier;
            serviceTicket.Summary           = model.tktSummary;
            serviceTicket.DetailDescription = model.probDesc;
            serviceTicket.StatusName        = "";
            serviceTicket.ServiceType       = "";
            serviceTicket.ServiceSubType    = "";
            serviceTicket.Priority          = model.PriorityTxt;
            serviceTicket.ContactId         = ContactID;
            // serviceTicket.Id = 0;
            //serviceTicket.boar
            serviceTicket.DetailNotes = note;
            _serviceTicketApi         = new ServiceTicketApi("https://control.mysupport247.net", "Mysupport247", "SwitchvoxAPI", "mH5219b2vri0KUa", "NovaramCred1");
            var result = _serviceTicketApi.AddOrUpdateServiceTicketViaCompanyIdentifier(companydetail.CompanyIdentifier, serviceTicket);



            return(RedirectToAction("Index", "Home", new { callerID = model.contactno }));
        }
Ejemplo n.º 7
0
 protected override void CreateMocks()
 {
     base.CreateMocks();
     inputNote = new TicketNote();
 }
Ejemplo n.º 8
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));
        }
Ejemplo n.º 9
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());
            }
        }
        public TicketNote CreateTicketNote(Ticket Ticket, Resource ImpersonateResource, string Title, string Description, string Type, string Publish)
        {
            TicketNote _result = null;

            if (String.IsNullOrWhiteSpace(Title))
            {
                Title = "Empty subject line";
            }
            if (string.IsNullOrWhiteSpace(Description))
            {
                Description = "Empty message contents";
            }
            if (Ticket == null || string.IsNullOrWhiteSpace(Type) || string.IsNullOrWhiteSpace(Publish))
            {
                throw new ArgumentNullException();
            }
            try
            {
                _result = new TicketNote()
                {
                    TicketID    = Convert.ToInt32(Ticket.id),
                    Title       = Title.Substring(0, Title.Length > 250 ? 250 : Title.Length),
                    Description = Description.Substring(0, Description.Length > 3200 ? 3200 : Description.Length),
                    NoteType    = Convert.ToInt32(PickListValueFromField(ticketNote_fieldInfo.GetFieldInfoResult, "NoteType", Type)),
                    Publish     = Convert.ToInt32(PickListValueFromField(ticketNote_fieldInfo.GetFieldInfoResult, "Publish", Publish)),
                };
            }
            catch (Exception _ex)
            {
                _result = null;
                throw new ArgumentException("Unable to build ticketnote request. Please review InnerException.", _ex);
            }
            try
            {
                if (_result != null)
                {
                    _atwsIntegrations.ImpersonateAsResourceID          = ImpersonateResource != null ? (int)ImpersonateResource.id : 0;
                    _atwsIntegrations.ImpersonateAsResourceIDSpecified = _atwsIntegrations.ImpersonateAsResourceID == 0 ? false : true;
                    createResponse _response = _atwsServicesClient.create(new createRequest(_atwsIntegrations, new Entity[] { _result }));
                    _atwsIntegrations.ImpersonateAsResourceID          = 0;
                    _atwsIntegrations.ImpersonateAsResourceIDSpecified = false;
                    if (_response.createResult.ReturnCode > 0 && _response.createResult.EntityResults.Length > 0)
                    {
                        _result = (TicketNote)_response.createResult.EntityResults[0];
                    }
                    else if (_response.createResult.ReturnCode <= 0 && _response.createResult.EntityResults.Length == 0 && _response.createResult.Errors.Count() > 0)
                    {
                        throw new CommunicationException(_response.createResult.Errors[0].Message);
                    }
                    else
                    {
                        throw new CommunicationException("AutotaskAPIClient.CreateTicketNote() UNKNOWN ERROR");
                    }
                }
            }
            catch (Exception _ex)
            {
                _result = null;
                throw new CommunicationException("Unable to create ticketnote. Please review InnerException.", _ex);
            }
            return(_result);
        }
        public Attachment CreateTicketNoteAttachment(TicketNote ParentTicketNote, Resource ImpersonateResource, string Title, byte[] Data, string Publish)
        {
            Attachment _result = null;

            if (string.IsNullOrWhiteSpace(Title))
            {
                Title = "No Name";
            }
            if (ParentTicketNote == null || (Data == null || Data.Length <= 0 || Data.Length > 6000000) || string.IsNullOrWhiteSpace(Publish))
            {
                throw new ArgumentNullException();
            }

            try
            {
                _result = new Attachment()
                {
                    Info = new AttachmentInfo()
                    {
                        Type       = "FILE_ATTACHMENT",
                        ParentType = 23,
                        ParentID   = ParentTicketNote.id,
                        FullPath   = Title.Substring(0, Title.Length > 255 ? 255 : Title.Length),
                        Title      = Title.Substring(0, Title.Length > 255 ? 255 : Title.Length),
                        Publish    = Convert.ToInt32(PickListValueFromField(attachmentInfo_fieldInfo.GetFieldInfoResult, "Publish", Publish)),
                    },
                    Data = Data
                };
            }
            catch (Exception _ex)
            {
                _result = null;
                throw new ArgumentException("Unable to build attachment request. Please review InnerException.", _ex);
            }
            try
            {
                if (_result != null)
                {
                    _atwsIntegrations.ImpersonateAsResourceID          = ImpersonateResource != null ? (int)ImpersonateResource.id : 0;
                    _atwsIntegrations.ImpersonateAsResourceIDSpecified = _atwsIntegrations.ImpersonateAsResourceID == 0 ? false : true;
                    CreateAttachmentResponse _createResponse = _atwsServicesClient.CreateAttachment(new CreateAttachmentRequest(_atwsIntegrations, _result));
                    _atwsIntegrations.ImpersonateAsResourceID          = 0;
                    _atwsIntegrations.ImpersonateAsResourceIDSpecified = false;
                    if (_createResponse.CreateAttachmentResult > 0)
                    {
                        GetAttachmentResponse _getResponse = _atwsServicesClient.GetAttachment(new GetAttachmentRequest(_atwsIntegrations, _createResponse.CreateAttachmentResult));
                        if (_getResponse.GetAttachmentResult != null)
                        {
                            _result = _getResponse.GetAttachmentResult;
                        }
                        else
                        {
                            throw new CommunicationException("AutotaskAPIClient.CreateTickeNoteAttachment() UNKNOWN ERROR");
                        }
                    }
                }
            }
            catch (Exception _ex)
            {
                _result = null;
                throw new CommunicationException("Unable to create ticket note attachment. Please review InnerException.", _ex);
            }
            return(_result);
        }
Ejemplo n.º 12
0
 private void TicketNoteEditorView_OnLoaded(object sender, RoutedEventArgs e)
 {
     TicketNote.BackgroundFocus();
     TicketNote.CaretIndex = TicketNote.Text.Length;
 }
Ejemplo n.º 13
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)));
        }
Ejemplo n.º 14
0
        public TicketNote GetDetail(int id)
        {
            TicketNote ticketNote = _dBtsics.TicketNote.Find(id);

            return(ticketNote);
        }
Ejemplo n.º 15
0
 public TicketNote Add(TicketNote ticketNote)
 {
     _dBtsics.TicketNote.Add(ticketNote);
     _dBtsics.SaveChanges();
     return(ticketNote);
 }
Ejemplo n.º 16
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);
            //        }
            //    }
            //}
        }
Ejemplo n.º 17
0
        private async Task <Tuple <bool, string> > IsTicketUpdated(TicketViewModel model)
        {
            if (string.IsNullOrWhiteSpace(SessionVar.GetString("displayName")))
            {
                Redirect("~/Account/Login");
            }

            StringBuilder errors       = new StringBuilder();
            Guid          id           = model.TicketID;
            bool          isSuccessful = false;

            try
            {
                #region validate inputs
                if (model.TicketID == null)
                {
                    errors.AppendLine("Ticket ID is required.");
                }
                if (string.IsNullOrWhiteSpace(model.Description))
                {
                    errors.AppendLine("Description is required.");
                }
                if (model.FileAttachments != null)
                {
                    string[] unsupportedFileTypes = new[] { "exe" };
                }
                #endregion

                if (errors.Length > 0)
                {
                    isSuccessful = false;
                }
                else
                {
                    // sanitize data
                    model.Description = SecurityHelper.Sanitize(model.Description);

                    #region save data
                    using (TransactionScope transactionScope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
                    {
                        using (HelpDeskEntities dataContext = new HelpDeskEntities())
                        {
                            Ticket ticket = await dataContext.Tickets.FirstOrDefaultAsync(p => p.TicketID.Equals(model.TicketID));

                            if (ticket == null)
                            {
                                errors.AppendLine("Unknown ticket details");
                            }

                            if (errors.Length == 0)
                            {
                                model.Subject    = ticket.Subject;
                                model.OwnerEmail = ticket.OwnerEmail;

                                ticket.Status     = model.Status;
                                ticket.ModifiedBy = User.Identity.Name;

                                dataContext.Entry(ticket).State = EntityState.Modified;

                                if (await dataContext.SaveChangesAsync() > 0)
                                {
                                    Guid ticketNoteID = Guid.NewGuid();

                                    #region ticket note
                                    TicketNote ticketNote = new TicketNote()
                                    {
                                        TicketNoteID = ticketNoteID,
                                        TicketID     = model.TicketID,
                                        Note         = model.Description,
                                        CreatedBy    = User.Identity.Name,
                                        CreationDate = DateTime.Now,
                                        ModifiedBy   = User.Identity.Name,
                                        ModifiedDate = DateTime.Now,
                                        IsDeleted    = false
                                    };

                                    dataContext.TicketNotes.Add(ticketNote);

                                    if (await dataContext.SaveChangesAsync() > 0)
                                    {
                                        #region ticket files
                                        if (model.FileAttachments != null)
                                        {
                                            if (model.FileAttachments.Length > 0)
                                            {
                                                string targetPath = HttpContext.Server.MapPath(this.fileAttachmentPath);

                                                if (model.FileAttachments[0] != null)
                                                {
                                                    List <TicketFile> ticketFiles = new List <TicketFile>();

                                                    foreach (var file in model.FileAttachments)
                                                    {
                                                        string fileName = Path.Combine(targetPath, file.FileName);
                                                        file.SaveAs(fileName);

                                                        ticketFiles.Add(new TicketFile()
                                                        {
                                                            TicketFileID = Guid.NewGuid(),
                                                            TicketID     = ticket.TicketID,
                                                            FileName     = file.FileName,
                                                            FileForTOrN  = "N",
                                                            RefID        = ticketNoteID,
                                                            CreatedBy    = User.Identity.Name,
                                                            CreationDate = DateTime.Now,
                                                            ModifiedBy   = User.Identity.Name,
                                                            ModifiedDate = DateTime.Now,
                                                            IsDeleted    = false
                                                        });
                                                    }

                                                    dataContext.TicketFiles.AddRange(ticketFiles);

                                                    await dataContext.SaveChangesAsync();
                                                }
                                            }
                                        }
                                        #endregion
                                    }
                                    #endregion

                                    transactionScope.Complete();
                                    isSuccessful = true;
                                }
                                else
                                {
                                    errors.AppendLine("Unknow error occured.");
                                }
                            }
                        }
                    }
                    #endregion
                }
            }
            catch (DbEntityValidationException ex)
            {
                isSuccessful = false;
                HomeController.LogError(ex, HttpContext.Server.MapPath("~/Error_Log.txt"));
            }
            catch (Exception ex)
            {
                isSuccessful = false;
                errors.AppendLine(ex.Message);
                HomeController.LogError(ex, HttpContext.Server.MapPath("~/Error_Log.txt"));
            }

            return(Tuple.Create(isSuccessful, errors.ToString()));
        }
Ejemplo n.º 18
0
 public TicketNote Edit(TicketNote ticketNote)
 {
     _dBtsics.Entry(ticketNote).State = EntityState.Modified;
     _dBtsics.SaveChanges();
     return(ticketNote);
 }
Ejemplo n.º 19
0
        public Dictionary<int, List<TicketNote>> GetTicketNotes(int[] ticketIds)
        {
            var cmd = new SqlCommand();
            cmd.Connection = _conn;

            //http://stackoverflow.com/questions/337704/parameterizing-a-sql-in-clause/337792#337792
            var idsMap = new Dictionary<string, int>();
            for (var i = 0; i < ticketIds.Length; i++)
                idsMap["@id" + i.ToString()] = ticketIds[i];

            cmd.CommandText = @"SELECT SR_Detail_RecID, Created_By, SR_Detail_Notes, Last_Update, Updated_By,
                                    Problem_Flag, InternalAnalysis_Flag, Resolution_Flag, SR_Service_RecID
                                FROM dbo.SR_Detail
                                WHERE SR_Service_RecID IN (" + string.Join(",", idsMap.Keys) + ")";

            foreach (var k in idsMap.Keys)
                cmd.Parameters.AddWithValue(k, idsMap[k]);

            var results = new Dictionary<int, List<TicketNote>>();
            using (var reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    int ticketId = (int)reader["SR_Service_RecID"];
                    TicketNote n = null;
                    try
                    {
                        n = new TicketNote(reader);
                    }
                    catch (Exception ex)
                    {
                        // TODO: log
                        continue;
                    }

                    if (n != null)
                    {
                        List<TicketNote> notes = null;
                        if (!results.ContainsKey(ticketId))
                        {
                            notes = new List<TicketNote>();
                            results.Add(ticketId, notes);
                        }
                        else
                        {
                            notes = results[ticketId];
                        }

                        notes.Add(n);
                    }
                }
            }

            return results;
        }
Ejemplo n.º 20
0
        public TicketNote GetDetailbyTicketIdAndResponder(int id, int responder)
        {
            TicketNote ticketNote = _dBtsics.TicketNote.Where(t => t.TicketId.Equals(id) && t.UserId == responder).OrderByDescending(t => t.CreatedAt).FirstOrDefault();

            return(ticketNote);
        }
 public TicketNoteViewModel(TicketNote note)
 {
     this.ticketNote = note;
 }