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; } }
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; } }
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(); } }
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)); }
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(); }