Class: LesliSupport::TicketService

Inherits:
Lesli::ApplicationLesliService
  • Object
show all
Defined in:
app/services/lesli_support/ticket_service.rb

Instance Method Summary collapse

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..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.full_messages
        self.error(ticket.errors.full_messages.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..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

#indexObject



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..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

#showObject



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..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_deadlineObject



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..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