summaryrefslogtreecommitdiff
path: root/fake-service/lib/pixelated_service/contact.rb
diff options
context:
space:
mode:
Diffstat (limited to 'fake-service/lib/pixelated_service/contact.rb')
-rw-r--r--fake-service/lib/pixelated_service/contact.rb26
1 files changed, 26 insertions, 0 deletions
diff --git a/fake-service/lib/pixelated_service/contact.rb b/fake-service/lib/pixelated_service/contact.rb
new file mode 100644
index 00000000..e1c86779
--- /dev/null
+++ b/fake-service/lib/pixelated_service/contact.rb
@@ -0,0 +1,26 @@
+
+module PixelatedService
+ class Contact < Struct.new(:ident, :name, :addresses, :mails_received, :mails_sent, :last_received, :last_sent, :prev, :next)
+ include Comparable
+
+ def to_json(*args)
+ {
+ ident: self.ident,
+ name: self.name,
+ addresses: Array(self.addresses),
+ mails_received: self.mails_received || 0,
+ mails_sent: self.mails_sent || 0,
+ last_received: self.last_received,
+ last_sent: self.last_sent
+ }.to_json(*args)
+ end
+
+ def comparison_value
+ [(self.mails_received || 0) + (self.mails_sent || 0) * 0.8, self.last_received, self.last_sent]
+ end
+
+ def <=>(other)
+ other.comparison_value <=> self.comparison_value
+ end
+ end
+end