class app.models.Message extends Backbone.Model
  parse: (response, options) =>
    date_sent = new Date response['date_sent']
    response['date_sent_formatted'] = date_sent.getMonth() + 1 + '/' + date_sent.getDay() + '/' + date_sent.getFullYear()
    @original_tags = @_serialize_tags(response['tags'])
    return response

  add_tag: (tag) =>
    tags = @get('tags')
    if (tags.every (x) -> x != tag)
      tags.push tag
      return true
    false

  remove_tag: (tag) =>
    tags = @get('tags')
    tags = tags.filter (x) -> x != tag
    @set('tags', tags)

  get_tag_changes: ->
    serialized_tags = @_serialize_tags(@get('tags'))
    if serialized_tags != @original_tags
      return serialized_tags
    false

  reset_tags: ->
    @original_tags = @_serialize_tags(@get('tags'))

  _serialize_tags: (tags) ->
    tags.sort()
    tags.join(':::')

class app.collections.Messages extends Backbone.Collection
  model: app.models.Message

class app.models.Tag extends Backbone.Model

class app.collections.Tags extends Backbone.Collection
  model: app.models.Tag

class app.models.DistributionList extends Backbone.Model
  initialize: ->
    @messages = new app.collections.Messages
    @messages.url = '/monitoring/list/' + @id + '/messages/'
    if @get('filter_start') and this.get('filter_end')
      @messages.url += 'date_from/' + @get('filter_start') + '/date_to/' + @get('filter_end') + '/'


    @tags = new app.collections.Tags
    @tags.url = '/monitoring/list/' + @id + '/tags/'

class app.models.MonitoringFeed extends Backbone.Model
  initialize: ->
    @messages = new app.collections.Messages
    @messages.url = '/monitoring/' + @id + '/messages/'
    @tags = new app.collections.Tags
    @tags.url = '/monitoring/' + @id + '/tags/'


