Beispiel #1
0
        private async Task <VMs.Ticket> ConvertVMTicket(Data.Ticket ticket)
        {
            VMs.Ticket result = new VMs.Ticket();

            try
            {
                result.Id          = ticket.Id;
                result.Code        = ticket.Code;
                result.Description = ticket.Description;
                result.OpeningDate = ticket.OpeningDate;
                result.ClosingDate = ticket.ClosingDate;
                result.Priority    = ticket.Priority.ToString();
                result.Status      = ticket.Status.ToString();
                result.Type        = ticket.Type.ToString();

                using (var user = new UserController(context))
                {
                    result.Owner = await user.GetUserData(ticket.UserId);
                }

                using (var comment = new CommentController(context))
                {
                    result.Comments = await comment.GetCommentData(ticket.Id);
                }

                return(result);
            }
            catch (Exception ex) { throw ex; }
        }
Beispiel #2
0
        public async Task <VMs.Ticket> ConvertVMTicket(Data.Ticket ticket)
        {
            try
            {
                VMs.User           u;
                List <VMs.Comment> c;
                using (var user = new UserController(context))
                {
                    u = await user.GetUserData(ticket.UserId);
                }
                using (var com = new CommentController(context))
                {
                    c = await com.GetCommentData(ticket.Id);
                }
                VMs.Ticket result = new VMs.Ticket
                {
                    Id          = ticket.Id,
                    ClosingDate = ticket.ClosingDate,
                    Code        = ticket.Code,
                    Description = ticket.Description,
                    OpeningDate = ticket.OpeningDate,
                    Priority    = ticket.Priority.ToString(),
                    Status      = ticket.Status.ToString(),
                    Type        = ticket.Type.ToString(),
                    Owner       = u,
                    Comments    = c
                };

                return(result);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Beispiel #3
0
        public async Task <ActionResult <bool> > Save([FromBody] VMs.Ticket ticket)
        {
            try
            {
                //Validation
                if (!context.Tickets
                    .Where(x => x.RowStatus == Data.enRowStatus.Active && x.Code == ticket.Code && x.Description == x.Description)
                    .Any())
                {
                    // TICKETS

                    var ticketId = context.Tickets
                                   .Max(x => x.Id);

                    var dataTicket = new Data.Ticket
                    {
                        Id            = ++ticketId,
                        Code          = ticket.Code,
                        Description   = ticket.Description,
                        UserId        = ticket.Owner.Id,
                        OpeningDate   = ticket.OpeningDate,
                        ClosingDate   = ticket.ClosingDate,
                        TypeInner     = (short)Enum.Parse(typeof(enType), ticket.Type),
                        StatusInner   = (short)Enum.Parse(typeof(enStatus), ticket.Status),
                        PriorityInner = (short)Enum.Parse(typeof(enPriority), ticket.Priority),
                        RowStatus     = enRowStatus.Active,
                        RowDate       = DateTime.Now,
                    };

                    context.Tickets.Add(dataTicket);

                    // TICKET USER

                    var idTicketUser = context.TicketUser
                                       .Max(x => x.Id);

                    var ticketUser = new TicketUser
                    {
                        Id        = ++idTicketUser,
                        UserId    = ticket.Owner.Id,
                        TicketId  = ticketId,
                        RowStatus = enRowStatus.Active,
                        RowDate   = DateTime.Now
                    };

                    context.TicketUser.Add(ticketUser);

                    await context.SaveChangesAsync();

                    return(OkResponse(true));
                }
                else
                {
                    throw new Exception("Ticket já cadastrado!");
                }
            }
            catch (Exception ex) { return(BadRequestResponse(ex)); }
            finally { context.Dispose(); }
        }
Beispiel #4
0
        public async Task <ActionResult <TicketResponse> > PostTicket(DTO.Ticket input)
        {
            var ticket = new Data.Ticket
            {
                Title         = input.Title,
                Description   = input.Description,
                Priority      = input.Priority,
                Status        = input.Status,
                TicketType    = input.TicketType,
                CreatedOn     = input.CreatedOn,
                AssignedDevId = input.AssignedDevId,
                SubmittedById = input.SubmittedById,
                ProjectId     = input.ProjectId
            };

            _db.Tickets.Add(ticket);
            await _db.SaveChangesAsync();

            var result = ticket.MapTicketResponse();

            return(CreatedAtAction(nameof(GetTicket), new { id = result.Id }, result));
        }
Beispiel #5
0
        public string Clone(Guid OrgID, int DeptID, int TicketId, int UserId)
        {
            DataRow TktRow = Tickets.SelectOne(OrgID, DeptID, TicketId);
            if (TktRow == null)
            {
                //Ticket not exsist
                return "Source ticket not exists";
            }
            InitTicket(TktRow);
            int tktDeptId = (int)TktRow["company_id"];
            int userCreatedId = m_UserCreatedId;
            DataRow _user_details = Data.Logins.SelectUserDetails(tktDeptId, m_UserCreatedId);
            if (_user_details != null)
            {
                userCreatedId = (bool)_user_details["btUserInactive"] ? UserId : m_UserId;
            }
            int initialPostId = 0;
            string initPost = m_InitialPost;
            if (m_InitialPost.Contains("This ticket was entered by"))
                initPost = m_InitialPost.Substring(0, m_InitialPost.IndexOf("<br><br>This ticket was entered by"));
            int _TktId = Data.Tickets.CreateNew(OrgID, tktDeptId, UserId, m_TechId, userCreatedId, Functions.User2DBDateTime(DateTime.UtcNow), m_AccountId, m_AccountLocationId,
                false, m_LocationId, m_ClassId, m_Level, m_SubmissionCategory, IsHandleByCallCentre, m_CreationCategoryId, false,
                m_PriorityId, m_RequestCompletionDate, m_RequestCompletionNote, m_SerialNumber, Tickets.SelectAssetsToArray(tktDeptId, TicketId), m_IdMethod, m_CustomFieldsXML, IncreaseCopyOf(m_Subject), initPost,
                null, TktRow["Status"].ToString() == "Closed" ? "Open" : TktRow["Status"].ToString(), out initialPostId, m_ProjectId, m_FolderId, m_SchedTicketID, m_EstimatedTime);

            if (_TktId < 0)
            {
                string errMsg = "<b>ERROR. Ticket Not Saved.</b><br>";
                switch (_TktId)
                {
                    case -1:
                        errMsg += "Routing Error: Input level is not setup for this class.";
                        break;
                    case -2:
                        errMsg += "Routing Error: No routing options are enabled. No route found. Must choose Technician specifically.";
                        break;
                    case -3:
                        errMsg += "Routing Error: No Route Found. Routing configuration must be modified.";
                        break;
                    case -4:
                        errMsg += "Routing Error: Level does not exists.";
                        break;
                    case -5:
                        errMsg += "Routing Error: Route found but Technician could not be returned. Please check routing order for errors.";
                        break;
                }
                return errMsg;
            }
            else if (_TktId > 0)
            {

                DataTable dt = Data.Ticket.SelectTicketAssignees(OrgID, tktDeptId, TicketId, Data.Ticket.TicketAssignmentType.User, true, true);

                if (dt != null && dt.Rows.Count > 0)
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        int userId = (int)dr["UserId"];
                        if (userId == userCreatedId)
                            continue;
                        Data.Ticket.AttachAlternateAssignee(tktDeptId, _TktId, userId, Data.Ticket.TicketAssignmentType.User);
                    }
                }

                dt = Data.Ticket.SelectTicketAssignees(OrgID, tktDeptId, TicketId, Data.Ticket.TicketAssignmentType.Technician, true, true);

                if (dt != null && dt.Rows.Count > 0)
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        int techId = (int)dr["UserId"];
                        if (techId == m_TechId)
                            continue;
                        Data.Ticket.AttachAlternateAssignee(tktDeptId, _TktId, techId, Data.Ticket.TicketAssignmentType.Technician);
                    }
                }

                dt = Data.ToDo.SelectToDoListAndItems(tktDeptId, TicketId, m_ProjectId);
                if (dt != null && dt.Rows.Count > 0)
                {
                    string todoListId = Guid.NewGuid().ToString();
                    foreach (DataRow _r in dt.Rows)
                    {
                        switch (_r["ItemType"].ToString())
                        {
                            case "1": //ToDoList
                                todoListId = Guid.NewGuid().ToString();
                                Data.ToDo.InsertToDoList(todoListId, tktDeptId, _r["Name"].ToString(), "", _TktId, m_ProjectId);
                                break;
                            case "2": //ToDoItem
                                Data.ToDo.InsertToDoItem(tktDeptId, _r["Text"].ToString(), todoListId, m_UserCreatedId, _r.IsNull("AssignedId") ? 0 : (int)_r["AssignedId"], _r["HoursEstimatedRemaining"].ToString().Trim().Length > 0 ? (decimal)_r["HoursEstimatedRemaining"] : 0,
                                    _r["Due"].ToString().Trim().Length > 0 ? (DateTime)_r["Due"] : DateTime.MinValue);
                                break;
                        }
                    }
                }

                Data.Ticket _newTkt = new Data.Ticket(tktDeptId, _TktId, true);
                foreach (Data.Ticket.TicketAssignee _ta in _newTkt.Users) _ta.SendResponse = true;
                foreach (Data.Ticket.TicketAssignee _ta in _newTkt.Technicians) _ta.SendResponse = true;
                Data.NotificationRules.RaiseNotificationEvent(tktDeptId, m_UserCreatedId, Data.NotificationRules.TicketEvent.NewTicket, _newTkt, this, null);
            }
            return _TktId.ToString();
        }