summaryrefslogtreecommitdiff
path: root/help/app/models
diff options
context:
space:
mode:
Diffstat (limited to 'help/app/models')
-rw-r--r--help/app/models/account_extension/tickets.rb13
-rw-r--r--help/app/models/ticket.rb105
-rw-r--r--help/app/models/ticket_comment.rb43
-rw-r--r--help/app/models/ticket_selection.rb71
4 files changed, 0 insertions, 232 deletions
diff --git a/help/app/models/account_extension/tickets.rb b/help/app/models/account_extension/tickets.rb
deleted file mode 100644
index f898b56..0000000
--- a/help/app/models/account_extension/tickets.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-module AccountExtension::Tickets
- extend ActiveSupport::Concern
-
- def destroy_with_tickets
- Ticket.destroy_all_from(self.user)
- destroy_without_tickets
- end
-
- included do
- alias_method_chain :destroy, :tickets
- end
-
-end
diff --git a/help/app/models/ticket.rb b/help/app/models/ticket.rb
deleted file mode 100644
index cd22758..0000000
--- a/help/app/models/ticket.rb
+++ /dev/null
@@ -1,105 +0,0 @@
-#
-# TODO: thought i should reverse keys for descending, but that didn't work.
-# look into whether that should be tweaked, and whether it works okay with
-# pagination (seems to now...)
-#
-# TODO: better validation of email
-#
-# TODO: don't hardcode strings 'unknown user' and 'unauthenticated user'
-#
-class Ticket < CouchRest::Model::Base
- use_database "tickets"
-
- property :created_by, String, :protected => true # nil for anonymous tickets, should never be changed
- property :regarding_user, String # may be nil or valid username
- property :subject, String
- property :email, String
- property :is_open, TrueClass, :default => true
- property :comments, [TicketComment]
-
- timestamps!
-
- before_validation :set_email, :set_regarding_user, :on => :create
-
- design do
- view :by_updated_at
- view :by_created_at
- view :by_created_by
-
- view :by_is_open_and_created_at
- view :by_is_open_and_updated_at
-
- own_path = Pathname.new(File.dirname(__FILE__))
- load_views(own_path.join('..', 'designs', 'ticket'))
- end
-
- validates :subject, :presence => true
- validates :email, :allow_blank => true, :format => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/
-
- def self.search(options = {})
- @selection = TicketSelection.new(options)
- @selection.tickets
- end
-
- def self.destroy_all_from(user)
- self.by_created_by.key(user.id).each do |ticket|
- ticket.destroy
- end
- end
-
- def is_creator_validated?
- !!created_by
- end
-
- def set_email
- self.email = nil if self.email == ""
- end
-
- def set_regarding_user
- self.regarding_user = nil if self.regarding_user == ""
- end
-
- def close
- self.is_open = false
- end
-
- def reopen
- self.is_open = true
- end
-
- def commenters
- commenters = []
- self.comments.each do |comment|
- if comment.posted_by
- if user = User.find(comment.posted_by)
- commenters << user.login if user and !commenters.include?(user.login)
- else
- commenters << 'unknown user' if !commenters.include?('unknown user')
- end
- else
- commenters << 'unauthenticated user' if !commenters.include?('unauthenticated user')
- end
- end
- commenters.join(', ')
- end
-
- #
- # update comments. User should be set by controller.
- #
- def comments_attributes=(attributes)
- if attributes
- comment = TicketComment.new(attributes.values.first)
- comment.posted_at = Time.now
- comments << comment
- end
- end
-
- def created_by_user
- User.find(self.created_by)
- end
-
- def regarding_user_actual_user
- User.find_by_login(self.regarding_user)
- end
-
-end
diff --git a/help/app/models/ticket_comment.rb b/help/app/models/ticket_comment.rb
deleted file mode 100644
index bed5237..0000000
--- a/help/app/models/ticket_comment.rb
+++ /dev/null
@@ -1,43 +0,0 @@
-class TicketComment
- include CouchRest::Model::Embeddable
-
- #belongs_to :ticket #is this best way to do it? will want to access all of a tickets comments, so maybe this isn't the way?
- property :posted_by, String#, :protected => true #Integer#this should be current_user if that is set, meaning the user is logged in #cannot have it be protected and set via comments_attributes=. also, if it is protected and we set in the tickets_controller, it gets unset. TODO---is this okay to have it not protected and manually check it? We do not users to be able to set this.
- # if the current user is not set, then we could just say the comment comes from an 'unauthenticated user', which would be somebody with the secret URL
- property :posted_at, Time#, :protected => true
- #property :posted_verified, TrueClass, :protected => true #should be true if current_user is set when the comment is created
- property :body, String
- property :private, TrueClass # private comments are only viewable by admins #this is checked when set, to make sure it was set by an admin
-
- # ? timestamps!
- validates :body, :presence => true
- #before_validation :set_time#, :set_posted_by
-
- #design do
- # view :by_posted_at
- # view :by_body
- #end
-
- def is_comment_validated?
- !!posted_by
- end
-
- def posted_by_user
- User.find(posted_by) if posted_by
- end
-
-=begin
- #TODO.
- #this is resetting all comments associated with the ticket:
- def set_time
- self.posted_at = Time.now
- end
-=end
-
-=begin
- def set_posted_by
- self.posted_by = User.current if User.current
- end
-=end
-
-end
diff --git a/help/app/models/ticket_selection.rb b/help/app/models/ticket_selection.rb
deleted file mode 100644
index 74d5b78..0000000
--- a/help/app/models/ticket_selection.rb
+++ /dev/null
@@ -1,71 +0,0 @@
-class TicketSelection
-
- #
- # supported options:
- #
- # user_id: id of the user (uuid string)
- # open_status: open | closed | all
- # sort_order: updated_at_desc | updated_at_asc | created_at_desc | created_at_asc
- # admin_status: mine | all
- # is_admin: true | false
- #
- def initialize(options = {})
- @user_id = options[:user_id].gsub /[^a-z0-9]/, ''
- @open_status = allow options[:open_status], 'open', 'closed', 'all'
- @sort_order = allow options[:sort_order], 'updated_at_desc', 'updated_at_asc', 'created_at_desc', 'created_at_asc'
- @admin_status = allow options[:admin_status], 'mine', 'all'
- @is_admin = allow options[:is_admin], false, true
- end
-
- def tickets
- Ticket.send(finder_method).startkey(startkey).endkey(endkey).send(order)
- end
-
- protected
-
- def allow(source, *allowed)
- if allowed.include?(source)
- source
- else
- allowed.first
- end
- end
-
- def finder_method
- method = 'by_'
- method += 'includes_post_by_and_' if only_mine?
- method += 'is_open_and_' if @open_status != 'all'
- method += @sort_order.sub(/_(de|a)sc$/, '')
- end
-
- def startkey
- startkeys = []
- startkeys << @user_id if only_mine?
- startkeys << (@open_status == 'open') if @open_status != 'all'
- startkeys << 0
- startkeys = startkeys.join if startkeys.length == 1 # want string not array if just one thing in array
- startkeys
- end
-
- def endkey
- endtime = Time.now + 2.days # TODO. this obviously isn't ideal
- if self.startkey.is_a?(Array)
- endkeys = self.startkey
- endkeys.pop
- endkeys << endtime
- else
- endtime
- end
- end
-
- def order
- # we have defined the ascending method to return the view itself:
- (@sort_order.end_with? 'desc') ? 'descending' : 'ascending'
- end
-
-
- def only_mine?
- !@is_admin || @admin_status == 'mine'
- end
-
-end