Class: LesliSupport::TicketService
- Inherits:
-
Lesli::ApplicationLesliService
- Object
- Lesli::ApplicationLesliService
- LesliSupport::TicketService
- Defined in:
- app/services/lesli_support/ticket_service.rb
Instance Method Summary collapse
- #create(ticket_params) ⇒ Object
- #find(id: nil, uid: nil) ⇒ Object
- #index ⇒ Object
- #show ⇒ Object
- #update(params) ⇒ Object
- #with_deadline ⇒ Object
Instance Method Details
#create(ticket_params) ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'app/services/lesli_support/ticket_service.rb', line 65 def create(ticket_params) ticket = current_user.account.support.tickets.new(ticket_params) #ticket.source = Catalog::TicketSource.cloud_help_source(current_user.account.help) ticket.owner = current_user ticket.user = current_user unless ticket_params.dig(:started_at) #ticket.started_at = LC::Date2.new(Time.current).date.get end if ticket.save #Ticket.log_activity_create(current_user, ticket) #Ticket::Subscriber.add_subscriber(ticket, current_user, "discussion_created", "email") #Workflow::Action.execute_actions(current_user, ticket, {}, ticket.attributes) self.resource = ticket else pp ticket.errors. self.error(ticket.errors..to_sentence) end self end |
#find(id: nil, uid: nil) ⇒ Object
36 37 38 39 40 41 42 43 44 |
# File 'app/services/lesli_support/ticket_service.rb', line 36 def find(id: nil, uid: nil) scope = current_user.account.support.tickets # Use a hash to filter out nil values and find the record params = { id: id, uid: uid }.compact # Search and assign the resource if search params exist super(scope.find_by(params)) if params.any? end |
#index ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'app/services/lesli_support/ticket_service.rb', line 46 def index return current_user.account.support.tickets.left_joins( :user, :owner, :priority ).select( :id, :uid, :subject, Date2.new.db_column(:deadline_at), "CONCAT_WS(' ', lesli_users.first_name, lesli_users.last_name) as user_name", "CONCAT_WS(' ', owners_lesli_support_tickets.first_name, owners_lesli_support_tickets.last_name) as agent_name", "lesli_support_catalog_items.name as priority_name" ).order(id: :desc) .page(query[:pagination][:page]) .per(query[:pagination][:perPage]) end |
#show ⇒ Object
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'app/services/lesli_support/ticket_service.rb', line 89 def show() return current_user.account.support.tickets.left_joins( :user, :owner # ).select( # :id, # :subject, # :description, # :reference_url, # :deadline, # :started_at, # :completed_at, # :hours_worked, # :creator_id, # :user_id, # :catalog_workspace_id, # :catalog_type_id, # :catalog_category_id, # :catalog_priority_id, # "CONCAT_WS(' ', lesli_users.first_name, lesli_users.last_name) as user_name", # "CONCAT_WS(' ', creators_lesli_support_tickets.first_name, creators_lesli_support_tickets.last_name) as creator_name", # "lesli_support_tickets.updated_at", # "lesli_support_tickets.created_at" ).where("lesli_support_tickets.id = ?", self.resource.id).first end |
#update(params) ⇒ Object
114 115 116 |
# File 'app/services/lesli_support/ticket_service.rb', line 114 def update(params) self.resource.update(params) end |
#with_deadline ⇒ Object
118 119 120 121 122 123 124 125 126 127 |
# File 'app/services/lesli_support/ticket_service.rb', line 118 def with_deadline() current_user.account.support.tickets #.joins("left join cloud_help_ticket_assignments chta on chta.cloud_help_tickets_id = cloud_help_tickets.id and chta.users_id = #{current_user.id}") .select(:id, :subject, :description, :deadline) .where.not(:deadline => nil) #.where("cloud_help_tickets.deadline >= ?", query[:filters][:start_date]) #.where("cloud_help_tickets.deadline <= ? ", query[:filters][:end_date]) #.where("cloud_help_tickets.users_id = ? or cloud_help_tickets.user_main_id = ? or chta.users_id = ?", current_user.id, current_user.id, current_user.id) .order(:deadline) end |