_ = require('lodash')
utils = require('../../common/js/utils.coffee')
heaviest_top_placement = (banner_info) ->
  result = {}
  for banner_name, banner_data of banner_info
    if _.isEmpty(result) or result.weight < banner_data.weight
      result = _.extend({}, banner_data, {name: banner_name})
  result

module.exports =
  _is_valid_banner: (info) ->
    valid_banners = {}
    for key, value of info
      if !/backup_/.test(key) && !_.isUndefined(value.data?.main_color)
        valid_banners[key] = value
      else if _.contains([value.name, key], 'doubleclick_small')
        valid_banners[key] = value
    valid_banners


  compose: (search_params, tickets, banner_info) ->
    products = []

    higlighted_ticket = null

    for ticket in tickets
      product =
        type: 'ticket'
        data: ticket

      if !higlighted_ticket && search_params.ticket && utils.ticket_signature(ticket[0]) == search_params.ticket.signature
        product.data[0].highlight = true
        higlighted_ticket = product
      else if product.type != 'tour_ticket' && product.data[0].hotel
        product.type = 'tour_ticket'

      products.push(product)

    if tickets.length && !_.isEmpty(banner_info)
      valid_top_placements = @_is_valid_banner(banner_info)
      if !_.isEmpty(valid_top_placements)
        current_banner = heaviest_top_placement(valid_top_placements)
        products.splice(0, 0, {
          type: 'top_placement'
          data: current_banner
        })
    if tickets.length
      products.splice(3, 0, {
        type: 'top_placement'
        data:
          name: 'doubleclick_big'
      })

    products
